python - 在字典中查找特定的键值对
问题描述
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
解决方案
您不需要使用循环,您可以直接索引到字典中。
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")
推荐阅读
- javascript - Knockout.js 在表中添加和更新数组
- javascript - WebView SpeedTest 结果总是低于 CustomTab 或 Chrome
- c# - LINQ to NHibernate join - 查询每组的最新 N - NotSupportedException
- node.js - Asyncronous module function is not working
- javascript - 异步 try/catch 中的多个等待。如何使一个条件?
- firebase - Firebase 查询和规则
- excel - 提取引号之间的文本并移动到下一个单元格/行 vba
- javascript - jquery每个函数和拖放jquery ui
- azure - Azure AD B2C 将用户流与应用一对一关联
- r - 删除向量中前 10 个字符之后的所有字符 (R)