Python基本数据类型之字典dict
字典dict
是一个键(key)值(value)对,结构为{},大括号
创建字典
info = { # k1 k2 k3 k4为键 "k1": 18, # :后面分别为值 逗号为分隔符 "k2": True, # 数字,布尔值也可以作为键 "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) }
字典的值可以是任何值
- 列表,字典不能作为字典的key
- 字典是无序的
- 字典不能被切片,因为它是无序的;可根据索引取值,查找,找到元素
info = { "k1": 18, "k2": True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } v = info['k1'] print(v) $ 18
字典是支持del 删除的
info = { "k1": 18, "k2": True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } del info['k1'] print(info) $ {'k4': (11, 22, 33, 44), 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk3': (11, 22), 'kk2': 'vv2'}], 'k2': True}
支持for循环
info = { "k1": 18, "k2": True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } for item in info: print(item) $ k4 $ k2 info是字典类型 $ k1 默认for循环只有key $ k3 但是输出结果键每次排序都不同,因为字典是无序的
用for循环获取值values
代码接上 for item in info.values(): print(item) $ (11, 22, 33, 44) $ [11, [], (), 22, 33, {'kk3': (11, 22), 'kk2': 'vv2', 'kk1': 'vv1'}] $ True $ 18
既想获取key又想获取value则用items
代码接上 for item in info.items(): print(item) # keys和values都可以获得 $ ('k1', 18) $ ('k4', (11, 22, 33, 44)) $ ('k2', True) $ ('k3', [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22), 'kk1': 'vv1'}])
字典的方法(魔法)
序号 | 函数及描述 |
---|---|
1 | dict.clear() 删除字典内所有元素 |
2 | dict.copy() 返回一个字典的浅复制 |
3 | dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | dict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 | dict.keys() 以列表返回一个字典所有的键 |
8 | dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | dict.update({'k1':'v1'} OR k1=v1) 把字典dict2的键/值对更新到dict里 |
10 | dict.values() 以列表返回字典中的所有值 |
11 |
dict.popitem() 随机删除,并获取删除的键值以元组形式返回 |