字典 Dictionary
介绍
字典是一种可变容器模型,且可存储任意类型对象。字典的每个键值 key:value
对用冒号 :
分割,每个键值对之间用逗号 ,
分割,整个字典包括在花括号 {}
中 ,格式如下所示:
python
d = {key1 : value1, key2 : value2 }
tinydict1 = { 'a': 1, 'b': 2, 'b': '3' }
tinydict2 = { 'abc': 123, 98.6: 37 }
- 注意:
dict
作为 Python 的关键字和内置函数,变量名不建议命名为dict
。 - 键一般是唯一的,如果重复则 最后的一个键值对 会替换前面的,值不需要唯一。
- 值可以取任何数据类型,但键必须是 不可变数据类型,如字符串,数字或元组。
基本操作
python
tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
- 访问:
tinydict['Name']
- 更新:
tinydict['Age'] = 8
- 添加:
tinydict['School'] = "RUNOOB"
- 删除:
del tinydict['Name']
- 清空:
tinydict.clear()
- 删除整个字典:
del tinydict
内置函数
cmp(dict1, dict2)
比较两个字典元素len(dict)
计算字典元素个数,即键的总数str(dict)
输出字典可打印的字符串表示type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型
内置方法
dict.clear()
删除字典内的所有元素dict.copy()
返回一个字典的浅复制dict.fromkeys(seq[, val])
创建一个新字典,以序列seq
中元素做字典的键,val
为字典所有键对应的初始值dict.get(key[, val])
返回指定键的值,如果键不在字典中返回默认值 None 或者设置的默认值dict.items()
以 列表 返回可遍历的键值对 元组 数组dict.keys()
以列表返回一个字典所有的键dict.setdefault(key, default=None)
如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值dict.update(dict2)
把字典dict2
的键/值对更新到dict
里dict.values()
以列表返回字典中的所有值dict.pop(key[,default])
删除字典给定键key
所对应的值,返回值为被删除的值。- 如果
key
存在,删除字典中对应的元素 - 如果
key
不存在,返回设定的默认值default
- 如果
key
不在且默认值没有给定,触发KeyError
异常
- 如果
dict.popitem()
返回并删除字典中的最后一对键和值。
举例说明:
python
rawdict = {'Hello': 123}
# dict.fromkeys(seq[, value])
seq = ('Google', 'Runoob', 'Taobao')
thisdict = dict.fromkeys(seq) # 不指定 value 默认为 None
thisdict = dict.fromkeys(seq, 10) # {'Google': 10, 'Taobao': 10, 'Runoob': 10}
thisdict = rawdict.fromkeys(seq, 10) # 与 rawdict 无关
# dict.get(key[, value])
tinydict = {'Name': 'Runoob', 'Age': 27}
a = tinydict.get('Salary', 0.0) # a = 0.0
b = tinydict.get('Age') # b = 27
# dict.setdefault(key, default=None)
tinydict = {'runoob': '菜鸟教程', 'google': 'Google 搜索'}
a = tinydict.setdefault('runoob', None) #
b = tinydict.setdefault('Taobao', '淘宝')
print(tinydict) # {'runoob': '菜鸟教程', 'google': 'Google 搜索', 'Taobao': '淘宝'}
get()
和 setdefault()
的区别主要在字典中没有 key
的情况下:
setdefault()
会修改原字典,加入dict[key] = value
get()
不会修改原字典