首先需要了解,在 Python 中,字典是一种 key-value 键值对的数据结构,其中的 key 是唯一的,而 value 则可以重复。如果想通过字典中的 value 值来获取对应的 key 值,可以使用以下代码:
my_dict = {"A": 1, "B": 2, "C": 3}
my_value = 2
my_key = None
for key, value in my_dict.items():
if value == my_value:
my_key = key
break
这里使用了 for 循环遍历字典中的每一个键值对,如果其中有一个 value 等于需要查找的 my_value 值,就将其对应的 key 值存储到 my_key 中并跳出循环。这种方法虽然可行,但比较繁琐。下面介绍一种更加简洁的写法。
我们可以使用 Python 中的列表推导式和 next 函数来实现。具体的代码如下:
my_dict = {"A": 1, "B": 2, "C": 3}
my_value = 2
my_key = next((key for key, value in my_dict.items() if value == my_value), None)
这段代码中,使用了列表推导式 (key for key, value in my_dict.items() if value == my_value)
对字典中的键值对进行筛选,如果 value 等于 my_value,就将 key 存入生成的列表中。然后使用 next 函数获取列表中的第一个元素(也就是第一个符合条件的 key 值),如果列表为空,则设置默认值为 None。
下面给出一个实际的例子,假设我们要根据学生的学号查找对应的姓名和班级:
students = {1: {"name": "Tom", "class": "A"},
2: {"name": "John", "class": "B"},
3: {"name": "Lucy", "class": "C"}}
student_id = 2
student_info = next(({"name": name, "class": cls}
for id, {"name": name, "class": cls} in students.items()
if id == student_id), None)
print(student_info)
运行结果为:
{"name": "John", "class": "B"}
这里使用了跟上面相同的方法来查找对应学号的学生信息,只不过这里的数据结构是字典嵌套字典。列表推导式中我们用到了解包的写法,将 id 和 {"name": name, "class": cls} 分别赋值给变量 id 和 {"name": name, "class": cls},从而获取到学生的具体信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python字典通过值反查键的实现(简洁写法) - Python技术站