字典-dict

1. dict

   字典是Python提供的一种数据类型,用于存放有映射关系的数据,字典相当于两组数据,其中一组是key,是关键数据(程序对字典的操作都是基于key),

   另一组数据是value,可以通过key来进行访问。

   列出一些常用的API:

dict.clear()                         # 删除字典内所有元素 
dict.copy()                          # 返回一个字典的浅复制
dict.items()                         # 以列表返回可遍历的(键, 值)元组数组
dict.keys()                          # 以列表返回一个字典所有的键
dict.values()                        # 以列表返回字典中的所有值
dict.get(key, default=None)          # 返回指定键的值,如果值不在字典中返回default值
dict.setdefault(key, default=None)   # 和get()类似, 如果键不存在于字典中,将会添加键并将值设为default。如果字典中包含该键,则返回该键对应的值,否则返回为该键设置的值。
dict.update(dict2)                   # 把字典dict2的键/值对更新到dict里
dict.popitem()                       # 返回并删除字典中的最后一对键和值
dict.pop(key[,default])              # 删除字典给定键 key 及对应的值,返回值为被删除的值
dict.fromkeys(seq[, val])            # 创建一个新字典,以序列 seq 中元素做字典的键,val为字典所有键对应的初始值
len(dict)                            # 计算字典元素个数,即键的总数
cmp(dict1, dict2)                    # 比较两个字典元素

   下面举几个例子:

d = {}   # d = dict()
d.setdefault('a', []).append(1)
d.setdefault('a', []).append(2)
d.setdefault('b', []).append(4)
print(d)

# 通过 in 或 not in 运算符判断字典是否包含指定的 key
print('a' in d)

e = d.copy()
e.clear()
print(e)

# 获取元素
print(d.get('a'))
print(d['a'])
print(d.get('c'))
print(list(d.items()))
print(list(d.keys()))
print(list(d.values()))

g = d.popitem()
print(g)
print(d)

h = dict(k1 =1, k2 = 2)
d.update(h)
print(d)
print(d.pop('k1'))

# 由元组生成字典
headers = ['name', 'shares', 'price']
values = ['ACME', 100, 490.1]
s = dict(zip(headers,values))
print(s)

   dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。默认情况下,dict迭代的是key。

d = {'d': 1, 'b': 2, 'c': 3}
for key in d:
    print(key)

   如果要迭代value,可以这么做:

d = {'d': 1, 'b': 2, 'c': 3}
for value in d.values():
    print(value)

   同时迭代key和value,可以这么做:

d = {'d': 1, 'b': 2, 'c': 3}
for k, v in d.items():
    print(k, v)

2. defaultdict

   使用defaultdict为字典的每个key设置默认值,当访问的key不存在时,该字典不会报错,而是会返回设置的默认值。

from collections import defaultdict

d = defaultdict(list)
print(d['a'])   # 输出[]

   可以使用 defaultdict 来创建一个多值映射字典,即 value 是容器类型,免去初始化的麻烦。

3. OrderedDict

   为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的 OrderedDict 类。在迭代操作的时候它会保持元素被插入时的顺序。

from collections import OrderedDict

d = OrderedDict()
d['foo'] = 1
d['bar'] = 2
d['spam'] = 3
d['grok'] = 4

# Outputs "foo 1", "bar 2", "spam 3", "grok 4"
for key in d:
    print(key, d[key])

   测试的时候发现 dict 其实也是按插入顺序输出的,不知道是不是python3做出的更改。

4. 字典推导式

   字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明:

prices = {
    'ACME': 45.23,
    'AAPL': 612.78,
    'IBM': 205.55,
    'HPQ': 37.20,
    'FB': 10.75
}

p = { key: value for key, value in prices.items() if value > 200 }
print(p)

  

原文地址:https://www.cnblogs.com/yanghh/p/13187285.html