Python Dict 字典
2019-03-28 本文已影响30人
JunChow520
Python中字典是一系列的键值对,每个键都与一个值相关联,可使用键来访问与之关联的值。与键相关联的值可以是数字、字符串、列表、字典。事实上,可将任何Python对象用作字典的值。
- 字典使用花括号
{}
包裹的一系列键值对来表示 - 键值对是两个相关联的值,指定键时将返回与之关联的值。
- 键和值之间使用冒号
:
分隔,键值对之间使用逗号,
分隔。 - 访问字典中的值,只需要指定字典名。
- 字典中可包含任意数量的键值对
dict = {"user_id":10000, "username":"junchow"}
print(dict)
# {'user_id': 10000, 'username': 'junchow'}
print(dict["user_id"])
# 10000
print(dict["username"])
# junchow
- 键值对的排列顺序与添加顺序不同,python不关心键值对的添加顺序,只关心键值对之间的关联关系。
dict = {"user_id":10000, "username":"junchow"}
dict["gender"] = 1
print(dict)
# {'user_id': 10000, 'username': 'junchow', 'gender': 1}
- 字典是一种动态结构,可随时在其中添加键值对。
- 修改字典中的值,可依次指定字典名、用方括号括起来的键、与该键相关联的新值。
dict = {}
dict["user_id"] = 10000
dict["username"] = "junchow"
dict["gender"] = 1
print(dict)
# {'user_id': 10000, 'username': 'junchow', 'gender': 1}
- 删除键值对,可使用
del
语句将相应的键值对彻底删除。 -
del
语句时必须指定字典名和要删除的键
del dict["gender"]
print(dict)
# {'user_id': 10000, 'username': 'junchow'}
- 由类似对象组成的字典,使用字典来存储众多对象的同一种信息。
dict = {}
dict["american capitain"] = "steven steve roger"
dict["hulk"] = "robert bruce banner"
dict["spider man"] = "peter benjamin parker"
dict["iron man"] = "anthony edward tony stack"
print(dict)
# {'american capitain': 'steven steve roger', 'hulk': 'robert bruce banner', 'spider man': 'peter benjamin parker', 'iron man': 'anthony edward tony stack'}
遍历字典
- 遍历所有键值对
编写用于遍历字典的for
循环,可声明两个变量,用于存储键值对中的键和值。对于这两个变量,可使用任何名称。
dict = {}
dict["cn"] = "china"
dict["ca"] = "canada"
for key,val in dict.items():
print(key, val)
- 遍历字典中所有的键
dict = {}
dict["cn"] = "china"
dict["ca"] = "canada"
for key in dict.keys():
print(key)
方法keys()
并非只能用于遍历,实际上,它返回一个列表,包含字典中所有的键。
dict = {}
dict["cn"] = "china"
dict["ca"] = "canada"
print(dict.keys())
# dict_keys(['cn', 'ca'])
- 按顺序遍历字典中的所有键
字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。要以特定的顺序返回元素,可以在for
循环中对返回的键进行排序。
dict = {}
dict["cn"] = "china"
dict["ca"] = "canada"
dict["en"] = "english"
for item in sorted(dict.keys()):
print(item)
- 遍历字典中的所有值
可使用方法values()
返回一个值的列表,而不包含任何键。
dict = {}
dict["cn"] = "china"
dict["ca"] = "canada"
dict["en"] = "english"
for item in dict.values():
print(item)
使用values()
提取字典中所有的值,而没有考虑是否重复。为剔除重复项可使用集合set
,集合类似于列表,但每个元素都必须是独一无二的。
dict = {}
dict["cn"] = "china"
dict["usa"] = "america"
dict["ca"] = "canada"
dict["en"] = "english"
dict["us"] = "america"
for item in set(dict.values()):
print(item)
通过对包含重复元素的列表调用set()
,可让python找出列表中独一无二的元素,并使用这些元素来创建一个集合。结果是一个不重复的列表。
嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。
字典列表
# 创建空白列表
list = []
# 循环存储
for item in range(10):
dict = {"id":item, "name":"alice"}
list.append(dict)
# 分片打印
for item in list[:5]:
print(item)
# 打印输出
print("total : " + str(len(list)))
在字典中存储列表
有时候需要将列表存储在字典中,而不是将字典存储在列表中。
每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
dict = {}
dict["language"] = ["python", "java", "lua"]
dict["gender"] = ["male", "female"]
print(dict)
# {'language': ['python', 'java', 'lua'], 'gender': ['male', 'female']}
dict = {}
dict["language"] = ["python", "java", "lua"]
dict["gender"] = ["male", "female"]
print(dict)
for key,val in dict.items():
print(key + ":")
for item in val:
print(item)
在字典中存储字典
可在字典中嵌套字典