字典dict,编程大杀器,掌握之,佛挡杀佛 魔来斩魔!
字典是一个无序、可变和索引集合。 一个字典由多个键值对组成。 每个键值对将键(key
)映射到其关联的值(value
)。 字典是用大括号{}
来声明。 每个 key
和它的 value
之间用冒号 (:
) 分隔,item之间用冒号分隔逗号:
。如下:
my_dict = {
"name": "Max",
"age": 28,
"city": "New York"
}
创建字典
使用大括号{}
创建字典,或者使用内建的 dict()
函数。
代码:
my_dict = {"name": "Max", "age": 28, "city": "New York"}
print(my_dict)
# 或者使用 dict 函数,注意:不需要引号
my_dict_2 = dict(name="Lisa", age=27, city="Boston")
print(my_dict_2)
结果:
{'name': 'Max', 'age': 28, 'city': 'New York'}
{'name': 'Lisa', 'age': 27, 'city': 'Boston'}
访问字典
代码:
my_dict = {"name": "Max", "age": 28, "city": "New York"}
name_in_dict = my_dict["name"]
print(name_in_dict)
# 如果 key 不存在,会抛出 KeyError
# print(my_dict["lastname"])
结果:
Max
注意: 如果
ke
y 不存在,会抛出KeyError
。
增加或者修改字典
只需要简单地添加或者访问一个 key
并为它赋值。
代码:
my_dict = {"name": "Max", "age": 28, "city": "New York"}
# 增加一个新的 key
my_dict["email"] = "max@xyz.com"
print(my_dict)
# 或者覆盖已经存在的 key
my_dict["email"] = "coolmax@xyz.com"
print(my_dict)
结果:
{'name': 'Max', 'age': 28, 'city': 'New York', 'email': '
{'name': 'Max', 'age': 28, 'city': 'New York', 'email': 'max@xyz.com'}
{'name': 'Max', 'age': 28, 'city': 'New York', 'email': 'coolmax@xyz.com'}
删除字典元素
删除字典有两种方法:
del
删除dict.pppitem()
方法,但python3.6之后已经弃用
代码:
my_dict = {"name": "Max", "age": 28, "city": "New York"}
# 删除一个 key-value pair
del my_dict["email"]
# 这会返回 value 并且删除 key-value pair
print("popped value:", my_dict.pop("age"))
# 返回并且删除最后插入的 key-value pair
# 注意python3.6之后,popitem()方法已经被弃用
print("popped item:", my_dict.popitem())
print(my_dict)
# clear() 方法会删除所有 key-value pairs
结果:
popped value: 28
popped item: ('city', 'New York')
{'name': 'Max'}
判断 key 是否存在
代码:
my_dict = {"name": "Max", "age": 28, "city": "New York"}
# 使用 if .. in ..
if "name" in my_dict:
print(my_dict["name"])
# 使用 try except
try:
print(my_dict["firstname"])
except KeyError:
print("No key found")
结果:
Max
No key found
循环遍历字典
字典也可以类似列表list
进行for循环遍历!
代码:
my_dict = {"name": "Max", "age": 28, "city": "New York"}
for key in my_dict:
print(key, my_dict[key])
# keys
for key in my_dict.keys():
print(key)
# values
for value in my_dict.values():
print(value)
# items
for key, value in my_dict.items():
print(key, value)
结果:
name Max
age 28
city New York
name
age
city
Max
28
New York
name Max
age 28
city New York
复制字典
普通的引用性复制,要小心!
代码:
dict_org = {"name": "Max", "age": 28, "city": "New York"}
# 这只是复制了 dict 的引用,所以要小心!
dict_copy = dict_org
# 修改的复制也会影响原来的
dict_copy["name"] = "Lisa"
print(dict_copy)
print(dict_org)
# 用 copy() 方法,或者用 dict(x) 方法来实际地复制字典
dict_org = {"name": "Max", "age": 28, "city": "New York"}
dict_copy = dict_org.copy()
# dict_copy = dict(dict_org)
# 修改的复制不会影响原来的
dict_copy["name"] = "Lisa"
print(dict_copy)
print(dict_org)
结果:
{'name': 'Lisa', 'age': 28, 'city': 'New York'}
{'name': 'Lisa', 'age': 28, 'city': 'New York'}
{'name': 'Lisa', 'age': 28, 'city': 'New York'}
{'name': 'Max', 'age': 28, 'city': 'New York'}
合并两个字典
dict.update()
方法可以快速合并字典。
代码:
# 用 update() 方法来合并两个字典
my_dict = {"name": "Max", "age": 28, "email": "max@xyz.com"}
my_dict_2 = dict(name="Lisa", age=27, city="Boston")
my_dict.update(my_dict_2)
print(my_dict)
结果:
{'name': 'Lisa', 'age': 27, 'email': 'max@xyz.com', 'city': 'Boston'}
key的类型
任何不可变类型,如字符串或数字都可以用作键。如果元组仅包含不可变元素,也可以使用它。
注意: 元组本身不可变,但其可以包含可变的元素,如列表。所以必须是元组仅包含不可变元素 时可以用作字典key。
# 用数字作为 key,但是要小心!
my_dict = {3: 9, 6: 36, 9: 81}
# 不要混淆数字和索引,如 my_dict[0] 不可能
print(my_dict[3], my_dict[6], my_dict[9])
# 用不可变元素(例如数字、字符串)作为 key
my_tuple = (8, 7)
my_dict = {my_tuple: 15}
print(my_dict[my_tuple])
# print(my_dict[8, 7])
# 列表不可能作为 key,因为它不是不可变的
# 这将抛出一个错误:
# my_list = [8, 7]
# my_dict = {my_list: 15}
结果:
9 36 81
15
嵌套字典
字典嵌套:值也可以是容器类型(例如列表、元组、字典)。
代码:
my_dict_1 = {"name": "Max", "age": 28}
my_dict_2 = {"name": "Alex", "age": 25}
nested_dict = {"dictA": my_dict_1, "dictB": my_dict_2}
print(nested_dict)
结果:
{'dictA': {'name': 'Max', 'age': 28}, 'dictB': {'name': 'Alex', 'age': 25}}
小节
本文简要分享了字典dict
的主要特性,希望对你有所帮助。
欢迎大家点赞、收藏,支持!
pythontip 出品,Happy Coding!
公众号: 夸克编程