字典
创建字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中,字典中每个键值对是没有顺序的.
键:必须唯一,必须是不可变类型
值:可以使用任何数据类型,包括布尔值
不可变类型:整形/字符串/元组
可变类型:列表/字典
例如:
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ]}
创建方式一
使用大括号创建,简单易操作
a = { }
创建方式二
使用dict()创建
a = dict(键值对)
a = dict((("name","Tony"), ("age",15), ))
print(a)
>>> {'name': 'Tony', 'age': 15}
创建方式三
使用fromkeys()
实例:
a = dict.fromkeys(["1", "2", "3"], "一个值")
print(a)
>>> {'1': '一个值', '2': '一个值', '3': '一个值'}
#他将前面列表内所有的元素作为键,列表外面的作为统一的值
键必须唯一
例如:
dictionary = {"name": "Tony", "name": "123", "age": 18, }
>>>{'name': '123', 'age': 18}
当字典里面有重复的键值对时,后面的会把前面的给覆盖掉
访问,查看字典里的值
通过键,查看单个值
语法结构:字典名[键名]
例如:
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ], }
print(dictionary["name"]) #可以取出此值
>>> Tony
查看字典内所有的键
使用函数keys()
语法结构:字典名.keys()
例如:
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ]}
print(dictionary.keys())
>>> dict_keys(['name', 'age', 'hobby']) #返回值不是列表
查看字典内所有的值
使用函数values()
语法结构:字典名.values()
例如:
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ]}
print(dictionary.values())
>>> dict_values(['Tony', 18, ['run', 'soccer']])
查看字典内所有的键值对
使用函数items()
语法结构:字典名.items()
例如:
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ]}
print(dictionary.items())
>>> dict_items([('name', 'Tony'), ('age', 18), ('hobby', ['run', 'soccer'])])
添加,添加键值对
直接赋值法
语法结构:字典名["键"] = "值"
例如:
a = {"num1": 1, "num2": 2, }
a["num3"] = 3 #把里面的键改成字典里面有的键,就变成了修改.
print(a)
>>> {'num1': 1, 'num2': 2, 'num3': 3}
函数setdefault() 智能选择是否添加键值
作用:若字典里面有这个键,就不赋值,若字典里面没有这个键,就把这个键值对添加到字典里民
语法结构:字典名.setdefault("键值对") #此函数有返回值
例如:
dictionary = {"name": "Tony", "age": 18, } #创建一个字典
ret1 = dictionary.setdefault("age", 20) #此键在列表里面,不赋值
ret2 = dictionary.setdefault("hobby", "run") #此键不在列表内,添加到列表内,并返回对应值
print(ret1)
print(ret2)
print(dictionary)
>>> 18
run
{'name': 'Tony', 'age': 18, 'hobby': 'run'}
两个字典,追加操作
函数update()
作用:把一个字典全部追加到另一个字典里面去.此字典不变化,当两个字典里面有相同值时,会覆盖掉原有的
例如:
dic1 = {"1": "11", "2": "22", }
dic2 = {"3": "33", "4": "44", "2": "新的值"} #字典里面有一个重复的值
dic1.update(dic2)
print(dic1)
print(dic2)
>>>{'1': '11', '2': '新的值', '3': '33', '4': '44'} #可以发现相同的值被覆盖掉了
{'3': '33', '4': '44', '2': '新的值'} #此列表不发生任何变化
删除键值对操作
使用键修改
语法结构:字典名["键"] = "新值"
例如:
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ]}
dictionary["name"] = "张三"
print(dictionary)
>>> {'name': '张三', 'age': 18, 'hobby': ['run', 'soccer']}
删除键值对,通过键
使用del
语法结构:del 字典名["键"] #只需要打出键
使用pop()
语法结构:字典名.pop("键") #可以返回值,键值对的值.以元组的形式
随机删除键值对 -_-|||
使用popitem
语法结构:字典名.popitem()
清空字典
使用函数clear()
作用:清空字典 ,保留空字典
语法结构:字典名.clear()
字典排序
用键排序
函数sorted()
作用:把键根据编码表排序
语法结构:sorted(字典名)
遍历字典
遍历键
使用for循环遍历字典 默认遍历键 不显示值
例如:
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ]}
for i in dictionary:
print(i)
>>> name
age
hobby
遍历键值对
例如:
方法一 效率高:
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ]}
for i in dictionary:
print(i, dictionary[i])
>>>name Tony
age 18
hobby ['run', 'soccer']
方法二
dictionary = {"name": "Tony", "age": 18, "hobby": ["run", "soccer", ]}
for i, v in dictionary.items(): #也可以使用一个变量接收,一个变量遍历出来是元组
print(i, v)
>>>name Tony
age 18
hobby ['run', 'soccer']