Python 字典
- 字典的创建和删除
- 赋值创建字典
- 创建空字典
- 通过映射函数创建字典
- 通过给定的“键值对”创建字典
- 删除字典
- 通过“键值对”访问字典
- 遍历字典
- 添加、修改和删除字典元素
- 字典推导式
字典的创建和删除
赋值创建字典
dictionary = {'张三':'爸爸', '李四':'哥哥', '王五':'儿子' }
print(dictionary)
运行结果:
{'张三': '爸爸', '李四': '哥哥', '王五': '儿子'}
创建空字典
dictionary = {}
或者
dictionary = dict()
print(dictionary)
运行结果:
{}
通过映射函数创建字典
语法如下:
dictionary = dict(zip(list1, list2))
参数说明:
zip() 函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的 zip 对象。
如下例所示:
name = ['张三', '李四', '王五']
sign = ['爸爸', '哥哥', '儿子']
dictionary = dict(zip(name,sign)) # zip() 返回的是一个 zip 对象,而不是元组
print(dictionary)
运行结果:
{'张三': '爸爸', '李四': '哥哥', '王五': '儿子'}
通过给定的“键值对”创建字典
dictionary = dict(张三 = '爸爸', 李四 = "哥哥", 王五 = "儿子" )
print(dictionary)
运行结果:
{'张三': '爸爸', '李四': '哥哥', '王五': '儿子'}
在 Python 中,还可以使用 dict 对象的 fromkeys() 方法创建 值为空 的字典
name_list = ['张三', '李四', '王五']
dictionary = dict.fromkeys(name_list)
print(dictionary)
运行结果:
{'张三': None, '李四': None, '王五': None}
另外,可以通过已经存在的元组和列表创建字典。
name_tuple = ('张三', '李四', '王五') # 键 不可变,需要是元组类型
sign = ['爸爸', '哥哥', '儿子']
dictionary = {name_list:sign} # 不可用 dict() 创建
print(dictionary)
运行结果:
{('张三', '李四', '王五'): ['爸爸', '哥哥', '儿子']}
删除字典
同列表和元组一样,不再需要的字典可以使用 del 命令删除整个字典。
del dictionary
另外,如果只是想删除字典的全部元素,可以使用字典对象的 clear() 方法实现。执行 clear() 方法后,原字典将变为空字典。
dictionary.clear()
通过“键值对”访问字典
dictionary = {'张三':'爸爸', '李四':'哥哥', '王五':'儿子' }
print(dictionary) # 直接打印字典全部内容
print(dictionary["张三"] if "张三" in dictionary else "字典里没有这个人")
print(dictionary["赵六"] if "赵六" in dictionary else "字典里没有这个人") # 访问字典不存的键会报错,加入判断语句避免报错
运行结果:
{'张三': '爸爸', '李四': '哥哥', '王五': '儿子'}
爸爸
字典里没有这个人
推荐使用 get() 方法获取字典中指定键的值:
dictionary = {'张三':'爸爸', '李四':'哥哥', '王五':'儿子' }
# get() 中第二个参数为默认值,当字典找不到指定对象时,会采用默认值
print(dictionary.get("张三", "字典中没有这个人"))
print(dictionary.get("赵六", "字典中没有这个人"))
运行结果:
爸爸
字典中没有这个人
遍历字典
字典是以“键值对”的形式存储数据的,所以在使用字典时需要获取到这些“键值对”。Python 提供了遍历字典的方法,通过遍历可以获取字典中的全部“键值对”。
使用字典对象的 items() 方法可以获取字典的“键值对”列表。语法格式如下:
dictionary.items()
其中,dictionary 对字典对象;返回值为可遍历的(“键值对”) 的元组列表。想要获取到具体的“键值对”,可以通过 for 循环遍历该元组列表。
例如,定义一个字典,通过 items() 方法获取“键值对”的元组列表,并输出全部“键值对”,代码如下:
dictionary = {'qq':'123456789' , 'name':'yusael', 'music':'can you hear'}
print(dictionary.items()) # 返回的是 “内容是元组的列表”
for items in dictionary.items():
print(items)
运行结果:
dict_items([('qq', '123456789'), ('name', 'yusael'), ('music', 'can you hear')])
('qq', '123456789')
('name', 'yusael')
('music', 'can you hear')
上面的实例得到的是元组中的各个元素,如果想要获取到具体的每个键和值,可以使用下面的代码进行遍历:
dictionary = {'qq':'123456789' , 'name':'yusael', 'music':'can you hear'}
for key,value in dictionary.items():
print("键是:", key, "值是:", value )
运行结果:
键是: qq 值是: 123456789
键是: name 值是: yusael
键是: music 值是: can you hear
可以通过 keys() 方法获取键的列表,通过 values() 方法获取值的列表:
dictionary = {'qq':'123456789' , 'name':'yusael', 'music':'can you hear'}
print(dictionary.keys())
print(dictionary.values())
运行结果:
dict_keys(['qq', 'name', 'music'])
dict_values(['123456789', 'yusael', 'can you hear'])
添加、修改和删除字典元素
由于字典是可变序列,所以可以随时在其中添加“键值对”,这和列表类似。
dictionary = {'张三':'爸爸', '李四':'哥哥', '王五':'儿子' }
dictionary["赵六"] = "爷爷" # 直接添加新的键值对
print(dictionary)
运行结果:
{'张三': '爸爸', '李四': '哥哥', '王五': '儿子', '赵六': '爷爷'}
由于在字典中,“键” 必须是唯一的,所以如果新添加元素的 “键” 与已经存在的 “键” 重复,将会使用新的 “值” 替换原来的值,这也相当于修改字典的元素。
dictionary = {'张三':'爸爸', '李四':'哥哥', '王五':'儿子' }
dictionary["张三"] = "Father"
print(dictionary)
运行结果:
{'张三': 'Father', '李四': '哥哥', '王五': '儿子'}
当字典中的某一个元素不需要时,可以使用 del 命令 将其删除:
dictionary = {'张三':'爸爸', '李四':'哥哥', '王五':'儿子' }
del dictionary["李四"]
print(dictionary)
运行结果:
{'张三': '爸爸', '王五': '儿子'}
注:当要删除的键不存在时,会抛出异常
字典推导式
使用字典推导式可以快速生成一个字典,它的表现形式与列表推导式类似。例如,我们可以使用下面的代码生成一个包含 4 个随机数的字典,其中字典的键使用数字表示:
import random
randomdict = {i:random.randint(10,100) for i in range(1,5)}
print(randomdict)
运行结果:
{1: 69, 2: 11, 3: 11, 4: 25}