Python 在字典中查找特定的键值对

Python 在字典中查找特定的键值对,python,dictionary,Python,Dictionary,我有一本字典,上面有一个列表作为值,当我找到时,我试图访问键3的年龄(列表中的索引2)。我试过这个密码 my_dict = {1: ['Serena', 'Williams', 38],2: ['Bradley', 'Cooper', 45],3: ['Wendy', 'Williams', 56],4: ['Bill', 'Gates', 72], 5: ['Normani', 'Kordei', 24]} 我想要的是,如果我调用带有记录(3)的函数,我只会得到与该键对应的年龄,如下所示:

我有一本字典,上面有一个列表作为值,当我找到时,我试图访问键3的年龄(列表中的索引2)。我试过这个密码

my_dict = {1: ['Serena', 'Williams', 38],2: ['Bradley', 'Cooper', 45],3: ['Wendy', 'Williams', 56],4: ['Bill', 'Gates', 72], 5: ['Normani', 'Kordei', 24]}
我想要的是,如果我调用带有记录(3)的函数,我只会得到与该键对应的年龄,如下所示:

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
目前我得到:

3 56 Found

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

3 38 Found
3 45 Found
3 56 Found
3 72 Found
3 24 Found
或者使用try-except来处理“未找到”的情况(有些人可能认为这更像是“Pythonic”):

如中所述,您应该通过调用目录上的键直接访问
num
的记录。但是,使用迭代过程,要检查的正确项是
k
是否与所需的键
num
匹配

注意:不建议使用此方法——这只是对您的方法的清理:

my_dict={1:['Serena','Williams',38],2:['Bradley','Cooper',45],
3:[Wendy',Williams',56],4:[Bill',Gates',72],
5:[Normani',Kordei',24]}
def记录(数字):
对于我的目录项()中的k,v:
fname,lname,age=v
如果k==num:
打印(数量、年龄、“已找到”)
返回
打印(num,“未找到”)
对于范围内的(7):#反复调用函数以检查案例
记录(a)
上述对
记录的七次调用的输出为:

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")

作为附带观察,您可以说
fname,lname,age=v
,将三元素列表的内容
v
分配给各个变量;但你们也可以在my_dict.items()中对k(fname,lname,age)说
在迭代过程中提取它们。谢谢大家!我如何检查列表中的年龄是否大于40岁?比如“如果我的字典中的num>40,我知道这两种类型(list和int)不起作用,那么我如何将它们设置为相同的类型呢?我建议您接受Superformer的答案(单击复选标记)。由于您目前已经设置了dict,因此在查找高于某个阈值的年龄时,您可能希望遍历所有记录。因此,您可以对上述内容进行调整,以收集符合所需属性的记录,并在最后返回键列表。如果你想要,试试看,如果你有问题,问另一个问题。没关系,我知道了!
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")
0 Not found
1 38 Found
2 45 Found
3 56 Found
4 72 Found
5 24 Found
6 Not found