字典中,如何通过唯一的value获取key
如果传入的值在字典的值中不存在,可以返回一个特定的默认值或者抛出一个异常来表示该情况。以下是两种处理方式的示例:
- 返回默认值:
def get_key_by_value(dictionary, value, default=None):
for key, val in dictionary.items():
if val == value:
return key
return default
# 示例字典
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2}
# 获取值为4的键,默认返回None
result = get_key_by_value(my_dict, 4)
print(result)
# 获取值为4的键,指定默认返回值为'Not Found'
result = get_key_by_value(my_dict, 4, default='Not Found')
print(result)
在上述示例中,我们在 get_key_by_value()
函数中添加了一个额外的参数 default
,用于指定默认返回值。在循环遍历字典时,如果没有找到匹配的值,则会返回这个默认值。
运行代码,输出结果如下:
None
Not Found
可以看到,当传入值为 4
时,由于字典中没有对应的键,所以返回了设定的默认值。
- 抛出异常:
def get_key_by_value(dictionary, value):
for key, val in dictionary.items():
if val == value:
return key
raise ValueError("Value not found in dictionary")
# 示例字典
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2}
# 获取值为4的键,抛出异常
result = get_key_by_value(my_dict, 4)
print(result)
在上述示例中,如果没有找到匹配的值,我们使用 raise
语句抛出了一个 ValueError
异常,并提供了相应的错误消息。
运行代码,会得到以下异常输出:
ValueError: Value not found in dictionary
可以看到,当传入值为 4
时,由于字典中没有对应的键,所以抛出了指定的异常。
2.通过key找value
以下是这四种Python字典查询键值对的方法:
- 使用键查找单个值
使用字典的键(key)可以直接查找对应的值。
my_dict = {'a': 1, 'b': 2, 'c': 3}
value_a = my_dict['a']
print(value_a) # 输出: 1
在上述示例中,我们通过键 'a'
直接查找了字典 my_dict
中对应的值 1
。
如果键不存在,则会引发 KeyError
异常。因此,在使用该方法查找值之前,最好先使用 in
关键字检查字典中是否存在该键。
- 使用get()方法查找键对应的值
使用 get()
方法可以查找字典中指定键对应的值,如果键不存在,则返回 None
或指定的默认值。
my_dict = {'a': 1, 'b': 2, 'c': 3}
value_a = my_dict.get('a')
print(value_a) # 输出: 1
value_d = my_dict.get('d') # 返回 None
value_d = my_dict.get('d', 0) # 返回默认值 0
在上述示例中,我们使用 get()
方法查找了字典中键 'a'
和键 'd'
对应的值,并设置了默认值。
- 使用setdefault()查找
使用 setdefault()
方法可以查找字典中指定键对应的值,如果键不存在,则添加该键及其对应的值。如果键已存在,则返回其对应的值。
my_dict = {'a': 1, 'b': 2, 'c': 3}
value_a = my_dict.setdefault('a', 0)
value_d = my_dict.setdefault('d', 4)
print(value_a) # 输出: 1
print(value_d) # 输出: 4
# 字典被更新
print(my_dict) # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
在上述示例中,我们使用 setdefault()
方法查找了字典中键 'a'
和键 'd'
对应的值,并添加了键 'd'
及其对应的值。由于键 'a'
已存在,因此不会添加该键,而是直接返回其对应的值。
注意:如果未指定默认值,则默认为 None
。
- 查询所有键和值以及键值对
可以使用 keys()
、values()
和 items()
方法查询字典中所有的键、所有的值以及所有的键值对。
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys = my_dict.keys()
values = my_dict.values()
items = my_dict.items()
print(list(keys)) # 输出: ['a', 'b', 'c']
print(list(values)) # 输出: [1, 2, 3]
print(list(items)) # 输出: [('a', 1), ('b', 2), ('c', 3)]
在上述示例中,我们使用了 keys()
、values()
和 items()
方法来查询字典中的所有键、所有值和所有键值对,并将它们转换为了列表形式。注意:items()
方法返回的是一个由元组构成的视图对象,可以通过转换为列表来查看其中的元素。