定义一个字典
# 方式1 直接使用一个空字典
data_dict = {}
# 方式2 使用定义字典的关键字
data_dict = dict()
字典的取值
# 方式1 通过dict[key]的方式去取值
data_dict = {
"name": "小满",
"age": 3
}
info = data_dict['name']
print(info) # 小满
# 如果key 不在字典中 使用dict[key]的方法会报错
data_dict = {
"name": "小满",
"age": 3
}
info = data_dict['sex']
print(info) # KeyError: 'sex'
# 方式2 通过dict.get(key)的方式去取值
data_dict = {
"name": "小满",
"age": 3
}
info = data_dict.get("name")
print(info) # 小满
# 通过dict.get(key)的方式,如果key不在指定中,并不会报错
data_dict = {
"name": "小满",
"age": 3
}
# 情况1、未给get设置第二个参数
info = data_dict.get("sex")
print(info) # None
# 情况2、给get设置了第二个参数
info = data_dict.get("sex", "女")
print(info) # 女
嵌套取值
data_dict = {
"战士": ["小满", {"姓名": "小满", "年龄": 3, "台词": ["别羡慕,我可是凭本事摸鱼的!", "武道没有定势啊,人生…亦是如此!"]}],
"法师": {"王昭君": {"姓名": "王昭君", "年龄": 4, "台词": ("凛冬已至", "故乡的梅花,开了吗?")}},
}
name = data_dict.get("战士")[0]
word = data_dict.get("战士")[1]["台词"][-2]
print(name) # 小满
print(word) # 别羡慕,我可是凭本事摸鱼的!
name = data_dict.get("法师")["王昭君"]["姓名"]
age = data_dict.get("法师")["王昭君"]["年龄"]
word = data_dict.get("法师")["王昭君"]["台词"][0]
print(name) # 王昭君
print(age) # 4
print(word) # 凛冬已至
字典的常用方法
clear方法
data_dict = {
"name": "小满",
"age": 3
}
print(data_dict) # {'name': '小满', 'age': 3}
data_dict.clear()
print(data_dict) # {}
copy方法
data_dict = {
"name": "小满",
"age": 3
}
hero_dict = data_dict.copy()
print(hero_dict) # {'name': '小满', 'age': 3}
print(data_dict) # {'name': '小满', 'age': 3}
pop方法
data_dict = {
"name": "小满",
"age": 3
}
# pop中传入要删除的键,返回键对应的值
hero = hero_dict = data_dict.pop("name")
print(hero) # 小满
print(data_dict) # {'age': 3}
data_dict = {
"name": "小满",
"age": 3
}
# 如果key不在dict中,然后pop第二个参数不指定默认值
# 结果会报错
sex = hero_dict = data_dict.pop("sex")
print(sex) # KeyError: 'sex'
data_dict = {
"name": "小满",
"age": 3
}
# 如果key不在dict中,然后pop第二个参数指定了默认值
# 会返回指定的值,原字典不会删除数据
sex = hero_dict = data_dict.pop("sex", "女")
print(sex) # 女
print(data_dict) # {'name': '小满', 'age': 3}
setdefault
data_dict = {
"name": "小满",
"age": 3
}
# setdefault 设置字典的默认值,如果存在,则不修改,如果不存在则新增
# 返回修改后字典对应的value,若已经存在原字典中,则直接返回原字典的value
# setdefault可以设置第二个参数,如果不设置,新增的键值对中的值为None
value = data_dict.setdefault("sex")
print(value) # None
print(data_dict) # {'name': '小满', 'age': 3, 'sex': None}
data_dict = {
"name": "小满",
"age": 3
}
# 指定了第二个值
value = data_dict.setdefault("sex", "女")
print(value) # 女
print(data_dict) # {'name': '小满', 'age': 3, 'sex': '女'}
data_dict = {
"name": "小满",
"age": 3
}
value = data_dict.setdefault("name", "王昭君")
print(value) # 小满
print(data_dict) # {'name': '小满', 'age': 3}
items
data_dict = {
"name": "小满",
"age": 3
}
items = data_dict.items()
print(items) # dict_items([('name', '小满'), ('age', 3)])
print(type(items)) # <class 'dict_items'>
print(list(items)) # [('name', '小满'), ('age', 3)]
for key, value in items:
print(key, value)
# name 小满
# age 3
values
data_dict = {
"name": "小满",
"age": 3
}
values = data_dict.values()
print(values) # dict_values(['小满', 3])
print(type(values)) # <class 'dict_values'>
print(list(values)) # ['小满', 3]
keys
data_dict = {
"name": "小满",
"age": 3
}
keys = data_dict.keys()
print(keys) # dict_keys(['name', 'age'])
print(type(keys)) # <class 'dict_keys'>
print(list(keys)) # ['name', 'age']
popitem
# 从字典中移除一个任意的键值对,并以一个元组的形式返回被移除的键值对。
data_dict = {
"name": "小满",
"age": 3
}
items = data_dict.popitem()
print(items) # ('age', 3)
print(type(items)) # <class 'tuple'>
print(data_dict) # {'name': '小满'}
# 如果字典为空时调用 popitem() 方法,会抛出 KeyError 异常。
data_dict = {}
items = data_dict.popitem()
# 结果报错:KeyError: 'popitem(): dictionary is empty'
fromkeys
dict.fromkeys(iterable, value=None)
是 Python 字典(dict
)的一个方法,用于创建一个新的字典,其中包含指定可迭代对象中的元素作为键,并将所有键的值设置为指定的值。
下面是 dict.fromkeys()
方法的语法:
new_dict = dict.fromkeys(iterable, value)
其中,iterable
是一个可迭代对象,用于提供字典中的键,value
是可选参数,表示要设置的值,默认为 None
。
使用示例:
hero_list = ["小满", "王昭君", "小乔"]
age = 3
hero_dict = dict.fromkeys(hero_list, age)
print(hero_dict) # {'小满': 3, '王昭君': 3, '小乔': 3}
hero_dict = dict.fromkeys(hero_list)
print(hero_dict) # {'小满': None, '王昭君': None, '小乔': None}
fromkeys()
方法通常用于快速创建具有相同默认值的字典,特别是在初始化字典时非常有用。
update
# 将一个字典的键值对更新到另一个字典中,或者向字典中添加新的键值对。
data_dict = {
"name": "小满",
"age": 3
}
data = {"sex": "女"}
data_dict.update(data)
print(data_dict) # {'name': '小满', 'age': 3, 'sex': '女'}
删除字典
data_dict = {
"name": "小满",
"age": 3
}
print(data_dict) # {'name': '小满', 'age': 3}
del data_dict
print(data_dict) # NameError: name 'data_dict' is not defined