字典是由 键值对组合而成的一种容器,其中 键必须为字符串, 所有键是互不相同的;值可以为数字、字符串、列表、元组、集合、字典、布尔值或对象等等,值不具有互异性。
创建字典
创建字典有{}和dict()两种方法。
{}方法
- {}:创建空字典
- {key1:value1,key2:value2,…,keyn:valuen}:创建含有多个键值对的字典。
d1 = {}
d2 = {"A":1,"B":2,"C":3,"D":4}
d3 = {"A":1,"B":True,"C":"Python","D":[1,2,3],"E":{"a":1}}
print(d1) # {}
print(d2) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
print(d3) # {'A': 1, 'B': True, 'C': 'Python', 'D': [1, 2, 3], 'E': {'a': 1}}
dict()方法
- dict():创建空字典。
- dict(mapping):从键值对(key,value)构成的容器创建字典。
- dict(iterable):通过遍历可迭代的键值对象创建字典。
- dict(**kwargs):通过key=value创建字典。
d1 = dict() # 创建空字典
key = ["A","B","C","D"]
value = [1,2,3,4]
d2 = dict(zip(key,value)) # 通过zip对象创建字典
data = [10,20,30,40,50]
d3 = dict(enumerate(data,start=1)) # 通过enumerate对象创建字典
data = [("A",1),("B",2),("C",3),("D",4)]
d4 = dict(data) # 通过键值对容器创建字典
d4 = {}
for k,v in zip(key,value): # 遍历zip(key,value)创建字典
d4[k] = v
d5 = dict(one=1, two=2) # 通过key=value创建字典
print(d1) # {}
print(d2) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
print(d3) # {1: 10, 2: 20, 3: 30, 4: 40, 5: 50}
print(d4) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
print(d5) # {'one': 1, 'two': 2}
常用方法
访问
方法 | 说明 |
---|---|
dict[key] | 获取键key对应的值。 |
dict.get (key) | 获取键key对应的值。 |
dict.keys () | 获取所有的键。 |
dict.values () | 获取所有的值。 |
dict.items () | 获取所有的键值对。 |
len (dict) | 求字典的键值对个数。 |
data = {"A":1,"B":2,"C":3,"D":4,"E":5}
print(data["A"]) # 1
print(data.get("A")) # 1
print(data.keys()) # dict_keys(['A', 'B', 'C', 'D', 'E'])
key_list = list(data.keys())
value_list = list(data.values())
print(key_list) # ['A', 'B', 'C', 'D', 'E']
print(value_list) # [1, 2, 3, 4, 5]
print(data.items()) # dict_items([('A', 1), ('B', 2), ('C', 3), ('D', 4), ('E', 5)])
key_value_list = list(data.items())
print(key_value_list) # [('A', 1), ('B', 2), ('C', 3), ('D', 4), ('E', 5)]
D = {"A":1,"B":2,"C":3,"D":4,"E":5}
print(len(D)) # 5
修改
方法 | 说明 |
---|---|
dict[key] = value | 修改某个键对应的值。 |
dict.setdefault (key,default=None) | 向字典中插入一个键值对,key为键,default为值,默认为None。如果键存在,则该键对应的值不改变;否则,该键值对被添加进去。 |
dict.update (D) | 用字典D来更新原字典。如果原字典中存在D中的键值对,则原字典中的键值对被覆盖;否则,D中的键值对被添加进去。 |
sorted (object,key=None,reverse=False) | Python内置排序函数。 |
data = {"A":1,"B":2,"C":3,"D":4}
data["A"] = 100
print(data) # {'A': 100, 'B': 2, 'C': 3, 'D': 4}
data.setdefault("E")
print(data) # {'A': 100, 'B': 2, 'C': 3, 'D': 4, 'E': None}
data.setdefault("F",50)
print(data) # {'A': 100, 'B': 2, 'C': 3, 'D': 4, 'E': None, 'F': 50}
data.setdefault("F",0)
print(data) # {'A': 100, 'B': 2, 'C': 3, 'D': 4, 'E': None, 'F': 50}
a = {'one': 1, 'two': 2, 'three': 3}
a.update({'one':4.5, 'four': 9.3})
print(a) # {'one': 4.5, 'two': 2, 'three': 3, 'four': 9.3}
D = {"B":4,"A":2,"C":5,"E":1,"D":3}
list1 = sorted(D) # 按键排序,返回排序的键列表
#list1 = sorted(D.keys())
print(list1) # ['A', 'B', 'C', 'D', 'E']
list2 = sorted(D.values()) # # 按值排序,返回排序的值列表
print(list2) # [1, 2, 3, 4, 5]
list3 = sorted(D.items(),key=lambda x: x[0])
# x[0]:按键排序,x[1]:按值排序,返回排序后的键值对列表
print(list3) # [('A', 2), ('B', 4), ('C', 5), ('D', 3), ('E', 1)]
print(dict(list3)) # {'A': 2, 'B': 4, 'C': 5, 'D': 3, 'E': 1}
删除
方法 | 说明 |
---|---|
del | Python内置函数,直接删除对象。 |
dict.clear () | 清空字典。 |
dict.pop (key) | 根据键key删除键值对。 |
dict.popitem () | 删除字典尾部的键值对。 |
d1 = {"A":1,"B":2,"C":3,"D":4}
del d1
#print(data) # NameError: name 'data' is not defined
d2 = {"A":1,"B":2,"C":3,"D":4}
d2.clear()
print(d2) # {}
d3 = {"A":1,"B":2,"C":3,"D":4}
d3.pop("A")
print(d3) # {'B': 2, 'C': 3, 'D': 4}
d3.popitem()
print(d3) # {'B': 2, 'C': 3}
d3.popitem()
print(d3) # {'B': 2}
拷贝
方法 | 说明 |
---|---|
= | 浅拷贝,不产生新对象,只是给对象的引用起别名。 |
dict.copy () | 深拷贝,产生新对象和新内存。 |
d1 = {"A":1,"B":2,"C":3,"D":4}
d2 = d1
print(d2) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
print(id(d1)) # 1848109009216
print(id(d2)) # 1848109009216
d3 = d1.copy()
print(d3) # {'A': 1, 'B': 2, 'C': 3, 'D': 4}
print(id(d1)) # 1848109009216
print(id(d3)) # 1848088410368
遍历字典
D = {"A":1,"B":2,"C":3,"D":4}
## 遍历字典的键
# for key in D:
for key in D.keys():
print(key,end=" ")
else:
print()
# A B C D
## 遍历字典的值
for value in D.values():
print(value,end=" ")
else:
print()
# 1 2 3 4
## 同时遍历字典的键和值
for key,value in D.items():
print(key,value)
"""
A 1
B 2
C 3
D 4
"""
字典与列表的转换
字典==>列表
D = {"A":1,"B":2,"C":3,"D":4,"E":5}
key_list = list(D.keys())
value_list = list(D.values())
print(key_list) # ['A', 'B', 'C', 'D', 'E']
print(value_list) # [1, 2, 3, 4, 5]
列表==>字典
key_list = ['A', 'B', 'C', 'D', 'E']
value_list = [1, 2, 3, 4, 5]
new_dict = dict(zip(key_list,value_list))
print(new_dict) # {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}