zoukankan      html  css  js  c++  java
  • python 字典

    无序,通过键值对来存储数据

    可嵌套。异构,映射操作

    散列表

    基本操作

    d = {'spam':2,'ham':3,'eggs':4}
    print(d['spam']) # 2
    print(len(d)) # 3
    print('ham' in d) # True
    print(list(d.keys())) # ['spam', 'ham', 'eggs']

    原处修改

    d = {'spam':2,'ham':3,'eggs':4}
    d['ham'] = [1,2,4]
    print(d) # {'spam': 2, 'ham': [1, 2, 4], 'eggs': 4}
    del d['ham']
    print(d) # {'spam': 2, 'eggs': 4}
    d['spam'] = 'lux'
    print(d) # {'spam': 'lux', 'eggs': 4}
    d = {'spam':2,'ham':3,'eggs':4}
    print(list(d.items())) # [('spam', 2), ('ham', 3), ('eggs', 4)]
    print(list(d.keys())) # ['spam', 'ham', 'eggs']
    print(list(d.values())) # [2, 3, 4]
    print(d.get('eee','error')) # error
    print(d.get('spam','error')) # 2
    print(d.get('sdf')) # None
    d = {'spam':2,'ham':3,'eggs':4}
    e = {'jinx':5}
    d.update(e)
    print(d) # {'spam': 2, 'ham': 3, 'eggs': 4, 'jinx': 5}
    print(d.pop('jinx')) # 5
    print(d) # {'spam': 2, 'ham': 3, 'eggs': 4}
    table = {'python':'Gudio van Rossum',
    'Perl': 'Larry Wall',
    'Tcl': 'John Qusterhout'}
    language = 'python'
    creator = table[language]
    print(creator) # Gudio van Rossum
    for i in table:
    print(i,' ',table[i])

    python Gudio van Rossum

    Perl Larry Wall

    Tcl John Qusterhout

    注意

    序列运算无效

    对新索引赋值会添加项

    键不一定总是字符串

    稀疏结构

    dic = {}
    dic[(2,3,4)] = 88
    dic[(7,8,9)] = 99
    x = 2;y = 3;z = 4
    print(dic[(x,y,z)]) # 88
    print(dic) # {(2, 3, 4): 88, (7, 8, 9): 99}
    if (2,3,5) in dic:
    print(dic[(2,3,5)])
    else:
    print(0) # 0

    try:
    print(dic[(2,3,5)])
    except KeyError:
    print(0) # 0
    print(dic.get((2,3,4),0)) # 88
    print(dic.get((2,3,5),0)) # 0

    创建字典的其他方法

    print({'spam':2,'ham':3}) # {'spam': 2, 'ham': 3}
    d = {}
    d['spam'] = 2
    d['ham'] = 3
    print(d) # {'spam': 2, 'ham': 3}
    print(dict(spam = 2,ham =3)) # {'spam': 2, 'ham': 3}
    print(dict([('spam',2),('ham',3)])) # {'spam': 2, 'ham': 3}
    print(dict.fromkeys([1,2],0)) # {1: 0, 2: 0}
    print(dict.fromkeys(['spam','ham'],1)) #{'spam': 1, 'ham': 1}

    字典解析

    print(list(zip((1,2,4),(3,4,5)))) # [(1, 3), (2, 4), (4, 5)]
    print(dict(zip((1,2,4),(3,4,5)))) # {1: 3, 2: 4, 4: 5}
    print({k:v for (k,v) in zip([1,2,3],[4,5,6])}) # {1: 4, 2: 5, 3: 6}
    print({x:x2 for x in [1,2,3,4]}) # {1: 2, 2: 4, 3: 6, 4: 8}
    print({c:c
    4 for c in 'spam'})#{'s': 'ssss', 'p': 'pppp', 'a': 'aaaa', 'm': 'mmmm'}
    d={c.lower():c+'!' for c in 'spam'}
    print(d) # {'s': 's!', 'p': 'p!', 'a': 'a!', 'm': 'm!'}
    print({k:0 for k in ['a','b','c']}) # {'a': 0, 'b': 0, 'c': 0}
    print(dict.fromkeys('spam')) # {'s': None, 'p': None, 'a': None, 'm': None}
    print({s:None for s in 'spam'}) # {'s': None, 'p': None, 'a': None, 'm': None}

    字典视图和几何

    d = {'a':1,'b':2,'c':3}
    k = d.keys()
    v = d.values()
    print(k | {'x':4}) # {'c', 'b', 'a', 'x'}
    d = {'a':1,'b':2,'c':3}
    print(d.keys()&d.keys()) # {'c', 'b', 'a'}
    print(d.keys()&{'b'}) # {'b'}
    print(d.keys()&{'b':1}) # {'b'}
    print(d.keys()|{'b','c','d'}) # {'d', 'a', 'c', 'b'}
    d = {'a':1}
    print(list(d.items())) # [('a', 1)]
    print(d.items()|d.keys()) # {('a', 1), 'a'}
    print(d.items()|d) # {('a', 1), 'a'}
    print(d.items()|{('c',3),('d',4)}) # {('c', 3), ('d', 4), ('a', 1)}
    print(dict(d.items()|{('c',3),('d',4)})) # {'a': 1, 'c': 3, 'd': 4}
    d = {'a':1,'b':2,'c':3}
    for k

  • 相关阅读:
    POJ-2253 Frogger dijsktra查找间隔最小的路径
    LightOJ-1282 Leading and Trailing 模算数 快速幂 对数的用法
    LightOJ-1341 Aladdin and the Flying Carpet 分解质因数(注意对大素数的优化)
    UVA-10200 Prime Time 素数(注意除法精度)
    POJ-2142 The Balance 扩展欧几里德(+绝对值和最小化)
    ArchLinux 音乐播放客户端ncmpcpp和服务端mpd的配置
    [笔记-统计学习方法]感知机模型(perceptron) 原理与实现
    [Bug]Python3.x AttributeError: libtest.so: undefined symbol: fact
    [Bug]C++ XXX:undefined reference to "xxx"
    ip代理池的爬虫编写、验证和维护
  • 原文地址:https://www.cnblogs.com/jibandefeng/p/11161631.html
Copyright © 2011-2022 走看看