繁体   English   中英

字典中的最高值

[英]highest value in dictionary

我想做的是遍历 my_family 并返回年龄最高的成员。

my_family = {
    "member1": {"Name":"Person1","Gender": "Male","Age": 24},
    "member2": {"Name":"Person2","Gender": "Male","Age": 32},
    "member3": {"Name":"Person3","Gender": "Female","Age": 62}
}

我的尝试如下:

k = my_family.keys()  
v = my_family.values()

def highAge():
    for k,v in my_family.items():
        if "Age" in my_family.items():
            print("Age found")
    else:
         print("Failed")

highAge()

当前的 output 失败。

如果您不关心密钥,那么这是解决您问题的简单方法。

my_family = {
    "member1": {"Name":"Person1","Gender": "Male","Age": 24},
    "member2": {"Name":"Person2","Gender": "Male","Age": 32},
    "member3": {"Name":"Person3","Gender": "Female","Age": 62}
}

person_with_max_age = max(my_family.values(), key=lambda f: f["Age"])

print(person_with_max_age)
>> {'Name': 'Person3', 'Gender': 'Female', 'Age': 62}

快速修复:

你的前两行是多余的,删除它们:

k = my_family.keys()  
v = my_family.values()

然后在if语句my_family.items()更改为v ,并将 append 更改为break命令。 所以你的完整程序将是

def highAge():
    for k, v in my_family.items():
        if "Age" in v:
            print("Age found")
            break
    else:
         print("Failed")

highAge()

您还可以按年龄对字典进行排序并取最后一项

my_family = {
    "member1": {"Name":"Person1","Gender": "Male","Age": 24},
    "member3": {"Name":"Person3","Gender": "Female","Age": 62},
    "member2": {"Name":"Person2","Gender": "Male","Age": 32},
}

my_family_sorted_by_age = sorted(my_family.items(), key=lambda item: item[1]["Age"])
print(my_family_sorted_by_age[-1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM