如果字典不存在,则将键添加到字典中:
not in
运算符检查键是否不在字典中。my_dict = {
'site': 'jiyik.com'
}
key = 'topic'
if key not in my_dict:
my_dict[key] = 'Python'
# ️ {'site': 'jiyik.com', 'topic': 'Python'}
print(my_dict)
我们使用 not in
运算符来检查字典中是否不存在键。
与字典一起使用时,in
运算符会检查字典对象中是否存在指定键。
my_dict = {
'site': 'jiyik.com'
}
print('site' in my_dict) # ️ True
print('topic' in my_dict) # ️ False
print('site' not in my_dict) # ️ False
print('topic' not in my_dict) # ️ True
x not in s
返回x in s
的否定。
如果键不在字典中,我们使用括号表示法来添加它。
或者,我们可以使用 dict.get()
方法。
如果字典不存在,则将键添加到字典中:
dict.get()
方法获取给定键的值。my_dict = {
'site': 'jiyik.com'
}
key = 'topic'
my_dict[key] = my_dict.get(key, 'Python')
print(my_dict) # ️ {'site': 'jiyik.com', 'topic': 'Python'}
key = 'site'
my_dict[key] = my_dict.get(key, 'google.com')
print(my_dict) # ️ {'site': 'jiyik.com', 'topic': 'Python'}
如果键在字典中,则 dict.get
方法返回给定键的值,否则返回默认值。
my_dict = {
'site': 'jiyik.com'
}
# ️ jiyik.com
print(my_dict.get('site', 'default value'))
# ️ default value
print(my_dict.get('another', 'default value'))
该方法采用以下 2 个参数:
如果未提供默认参数的值,则默认为 None,因此 get()
方法永远不会引发 KeyError
。
在语句中,我们使用 dict.get()
方法获取给定键的值。
如果键存在于字典中,则返回其值。如果密钥不存在,它将被设置为提供的默认值。
my_dict = {
'site': 'jiyik.com'
}
key = 'topic'
my_dict[key] = my_dict.get(key, 'Python')
print(my_dict) # ️ {'site': 'jiyik.com', 'topic': 'Python'}
然而,这种方法比使用带有成员测试的 if 语句更含蓄和更间接。
或者,我们可以使用 dict.setdefault()
方法。
如果字典不存在,则将键添加到字典中:
dict.setdefault()
方法为键设置默认值。my_dict = {
'site': 'jiyik.com'
}
my_dict.setdefault('site', 'google.com')
print(my_dict) # ️ {'site': 'jiyik.com'}
my_dict.setdefault('topic', 'Python')
print(my_dict) # ️ {'site': 'jiyik.com', 'topic': 'Python'}
setdefault
方法接受一个键和一个默认值作为参数。
如果键在字典中,则该方法返回其值。
如果该键不在字典中,该方法将插入具有指定值的键。
如果我们不指定默认值,则使用 None。
指定的键只有在不存在的情况下才会被添加到字典中。
我们可能还会在网上看到使用字典合并运算符或将键值对解包到新字典中的示例。
my_dict = {
'site': 'jiyik.com'
}
new_dict = my_dict | {'topic': 'Python', 'site': 'google.com'}
print(new_dict) # ️ {'site': 'google.com', 'topic': 'Python'}
# -----------------------------------------------------------
new_dict = {'topic': 'Python', 'site': 'google.com'} | my_dict
print(new_dict) # ️ {'topic': 'Python', 'site': 'jiyik.com'}
合并 |
运算符用于合并两个字典,右边的字典优先。
第一个示例显示了在合并两个词典时如何覆盖现有词典中的站点键。
我们可以切换顺序并将现有词典放在右侧,因此它具有优先权,但这很难阅读且不直观。
使用字典解包 (**
) 语法可以实现相同的目的。
my_dict = {
'site': 'jiyik.com'
}
new_dict = {**my_dict, **{'topic': 'Python', 'site': 'google.com'}}
print(new_dict) # ️ {'site': 'google.com', 'topic': 'Python'}
new_dict = {**{'topic': 'Python', 'site': 'google.com'}, **my_dict}
print(new_dict) # ️ {'topic': 'Python', 'site': 'jiyik.com'}
我们使用字典解包
**
运算符将两个字典的键值对解包为第三个。
第二个字典的键值对覆盖第一个字典的键值对。
我们选择哪种方法是个人喜好的问题。 我会使用一个简单的 if
语句来检查键是否不在字典中。
我发现 if
语句方法是最直接和直观的。