首页 > 解决方案 > 在字典中查找特定的键值对

问题描述

my_dict = {1: ['Serena', 'Williams', 38],2: ['Bradley', 'Cooper', 45],3: ['Wendy', 'Williams', 56],4: ['Bill', 'Gates', 72], 5: ['Normani', 'Kordei', 24]}

我有那个字典,其中有一个列表作为值,我试图在找到时访问说键 3 的年龄(列表中的索引 2)。我试过这段代码

def record(num):
    my_dict = {1: ['Serena', 'Williams', 38],2: ['Bradley', 'Cooper', 45],3: ['Wendy', 'Williams', 56],
               4: ['Bill', 'Gates', 72], 5:['Normani', 'Kordei', 24]}
    for k, v in my_dict.items():
        fname = v[0]
        lname = v[1]
        age = v[2]
        if my_dict.get(num) is None:
            print('Not found')
        else:
            print(num, age, 'Found')

record(3) # Call function

我想要类似的东西,如果我用 record(3) 调用函数,我只会得到与该键对应的年龄,如下所示:

3 56 Found

目前我得到:

3 38 Found
3 45 Found
3 56 Found
3 72 Found
3 24 Found

标签: pythondictionary

解决方案


您不需要使用循环,您可以直接索引到字典中。

def record(num):
    my_dict = {1: ['Serena', 'Williams', 38],2: ['Bradley', 'Cooper', 45],3: ['Wendy', 'Williams', 56],
               4: ['Bill', 'Gates', 72], 5:['Normani', 'Kordei', 24]}
    if num in my_dict:
        print(num, my_dict[num][2], "Found")
    else:
        print("Not found")

或使用 try-except 来处理“未找到”的情况(有些人可能认为这更“Pythonic”):

def record(num):
    my_dict = {1: ['Serena', 'Williams', 38],2: ['Bradley', 'Cooper', 45],3: ['Wendy', 'Williams', 56],
               4: ['Bill', 'Gates', 72], 5:['Normani', 'Kordei', 24]}
    try:
        print(num, my_dict[num][2], "Found")
    except KeyError:
        print("Not found")

推荐阅读