随笔录--字典类型key找value或者value找key方法汇总

通过唯一的value获取key

如果传入的值在字典的值中不存在,可以返回一个特定的默认值或者抛出一个异常来表示该情况。以下是两种处理方式的示例:

1. 返回默认值:

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`,用于指定默认返回值。在循环遍历字典时,如果没有找到匹配的值,则会返回这个默认值。

运行代码,输出结果如下:

NoneNot Found

可以看到,当传入值为 `4` 时,由于字典中没有对应的键,所以返回了设定的默认值。

2. 抛出异常:

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` 时,由于字典中没有对应的键,所以抛出了指定的异常。

通过key找value


以下是这四种Python字典查询键值对的方法:

1. 使用键查找单个值

使用字典的键(key)可以直接查找对应的值。

my_dict = {'a': 1, 'b': 2, 'c': 3}
value_a = my_dict['a']
print(value_a)  # 输出: 1

在上述示例中,我们通过键 `'a'` 直接查找了字典 `my_dict` 中对应的值 `1`。

如果键不存在,则会引发 `KeyError` 异常。因此,在使用该方法查找值之前,最好先使用 `in` 关键字检查字典中是否存在该键。

2. 使用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'` 对应的值,并设置了默认值。

3. 使用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`。

4. 查询所有键和值以及键值对

可以使用 `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()` 方法返回的是一个由元组构成的视图对象,可以通过转换为列表来查看其中的元素。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值