字典
字典是一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
新建
# 创建一个空字典
dic = {}
print(dic, type(dic))
# 创建一个字典
# 直接创建
dic0 = {"Name": "Tom", "age": 18}
print("dic0:{}".format(dic0))
# 通过关键字dict及其参数创建
dic1 = dict(Name="LiMing", age=20)
print("dic1:{}".format(dic1))
# 通过二元数组创建
array = [('Name', "小白"), ('age', 20)]
dic2 = dict(array)
print("dic2:{}".format(dic2))
# 使用zip函数和key/value列表创建
keys = ['name', 'age']
values = ['LiuXiang', 20]
dic3 = dict(zip(keys, values))
print("dic3:{}".format(dic3))
# 字典推导式
dic4 = {i: 2 * i for i in range(3)}
print("dic4:{}".format(dic4))
# 通过dict.fromkeys()用来初始化字典, 设置value的默认值
dic5 = dict.fromkeys(range(3), 'x')
print("dic5:{}".format(dic5))
# 动态分配键值
dic6 = {}
dic6['Name'] = "DaBai"
dic6['age'] = 18
print("dic6:{}".format(dic6))
# 使用映射创建
dic7 = dict({"Name": "YingShe", "age": 30})
print("dic7:{}".format(dic7))
{} <class ‘dict’>
dic0:{‘Name’: ‘Tom’, ‘age’: 18}
dic1:{‘Name’: ‘LiMing’, ‘age’: 20}
dic2:{‘Name’: ‘小白’, ‘age’: 20}
dic3:{‘name’: ‘LiuXiang’, ‘age’: 20}
dic4:{0: 0, 1: 2, 2: 4}
dic5:{0: ‘x’, 1: ‘x’, 2: ‘x’}
dic6:{‘Name’: ‘DaBai’, ‘age’: 18}
dic7:{‘Name’: ‘YingShe’, ‘age’: 30}
参考:
Python创建字典的八种方式:jb51.net/article/157029.htm
Python中创建字典的几种方法:https://blog.csdn.net/u014291497/article/details/51052139
访问字典
# 初始化字典
dic = {"Name": "XiaoBai", "Age": 20, "Sex": "female"}
# 访问字典里的值
print("dic[Name]:{}".format(dic["Name"]))
print("dic[Age]:{}".format(dic["Age"]))
print("dic[Sex]:{}".format(dic["Sex"]))
# 获取字典指定键的值,如不存在返回None
dic_get_College = dic.get("College")
# 获取字典指定键的值,如不存则添加键并设置None
dic_get_set_College = dic.setdefault("College")
print("dic_get_College:{}".format(dic_get_College))
print("dic_get_set_College:{}".format(dic_get_set_College))
print(dic)
dic[Name]:XiaoBai
dic[Age]:20
dic[Sex]:female
dic_get_College:None
dic_get_set_College:None
{‘Name’: ‘XiaoBai’, ‘Age’: 20, ‘Sex’: ‘female’, ‘College’: None}
修改字典
# 初始化字典
dic = {"Name": "XiaoBai", "Age": 20, "Sex": "female"}
# 更新字典的值
dic["Age"] = 40
# 添加信息
dic["School"] = "CityCollege"
# 用字典更新字典
dic2 = {"price":4399,"Name":"Computer"}
dic.update(dic2)
print(dic)
{‘Name’: ‘Computer’, ‘Age’: 40, ‘Sex’: ‘female’, ‘School’: ‘CityCollege’, ‘price’: 4399}
删除字典元素
# 初始化字典
dic = {"Name": "XiaoBai", "Age": 20, "Sex": "female"}
# 删除字典的键
del dic["Name"]
# 删除给定key的值
dic.pop("Age")
# 清空字典
dic.clear()
# 删除字典
del dic
字典的迭代
# 初始化字典
dic = {"Name": "XiaoBai", "Age": 20, "Sex": "female", "School": "CityCollege"}
# 遍历所有键
for i in dic:
print(i, end=" ")
# 遍历所有键
for i in dic.keys():
print(i, end=" ")
# 遍历所有值
for i in dic.values():
print(i, end=" ")
# 遍历所有键值对
for i in dic.items():
print(i, end=" ")
Name Age Sex School
Name Age Sex School
XiaoBai 20 female CityCollege
(‘Name’, ‘XiaoBai’) (‘Age’, 20) (‘Sex’, ‘female’) (‘School’, ‘CityCollege’)
字典排序问题
# 初始化字典
str0 = "defabcg"
keys = list(str0)
values = [2, 7, 8, 3, 6, 5, 9]
dic = dict(zip(keys, values))
print(dic)
# 按值排序(逆序)
items = list(dic.items())
items.sort(key=lambda x: x[1], reverse=True)
dic = dict(items)
print(dic)
# 按值排序(正序)
items = list(dic.items())
items.sort(key=lambda x: x[0], reverse=False)
dic = dict(items)
print(dic)
{‘d’: 2, ‘e’: 7, ‘f’: 8, ‘a’: 3, ‘b’: 6, ‘c’: 5, ‘g’: 9}
{‘g’: 9, ‘f’: 8, ‘e’: 7, ‘b’: 6, ‘c’: 5, ‘a’: 3, ‘d’: 2}
{‘a’: 3, ‘b’: 6, ‘c’: 5, ‘d’: 2, ‘e’: 7, ‘f’: 8, ‘g’: 9}