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
答案 0 :(得分:1)
你不需要使用循环,你可以直接索引到字典中。
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")
答案 1 :(得分:0)
如 SuperStormer's answer 中所述,您应该通过调用目录中的键直接访问 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 record(num):
for k, v in my_dict.items():
fname, lname, age = v
if k == num:
print(num, age, 'Found')
return
print (num, "Not found")
for a in range(7): # Call function repeatedly to check cases
record(a)
上面对 record
的七次调用的输出是:
0 Not found
1 38 Found
2 45 Found
3 56 Found
4 72 Found
5 24 Found
6 Not found