如果条件满足,如何比较字典中的两个值并返回第三个值?

时间:2019-04-15 05:22:40

标签: python-3.x dictionary comparison

我在寻找此问题的解决方案时遇到了一些麻烦。我需要比较字典中属于不同键的项目。如果比较等于我的参数,则需要在这个完全相同的字典的新键中插入第三个(新)元素。以下是我打算做的一个例子。希望它更容易理解:

A={"names":["jason","peter","mary"],"ages":[25,35,45],"health":["Good","Good","Poor"]}

我需要分别比较"ages"的每个值和"health"的每个项目。如果"ages"中的值> 20并且"health"中的值是"Good",则需要将值"yes""no"添加到新密钥{{ 1}},根据之前进行的比较结果。

我一直在寻找所有可能的方法来做到这一点,但没有奏效。

2 个答案:

答案 0 :(得分:0)

您的数据整理得不好; zip可以提供帮助。

定义一个辅助谓词:

def is_fit(age, health):
    if age > 20 and health == 'Good':
        return 'yes'
    else:
        return 'no'

重新组织数据:

import pprint

a = {'names': 'jason peter mary'.split(),
     'ages': [25, 35, 45],
     'health': ['Good', 'Good', 'Poor']}
pprint.pprint(list(zip(a['names'], a['ages'], a['health'])), width=30)

[('jason', 25, 'Good'),
 ('peter', 35, 'Good'),
 ('mary', 45, 'Poor')]

现在您可以一起访问每个人的属性:

for name, age, health in zip(a['names'], a['ages'], a['health']):
    if is_fit(age, health) == 'yes':
        print(name)
a['fit'] = [is_fit(age, health)
            for age, health
            in zip(a['ages'], a['health'])]

答案 1 :(得分:0)

您可以通过简单的方式进行操作,并了解您是否是python编程的新手。我尝试根据给定的情况提供帮助。 @J_H答案也是正确的。您可以将两个答案都用作参考。

A={"names":["jason","peter","mary"],"ages":[25,35,45],"health": 
["Good","Good","Poor"]}

dicts = {}
age = (A.get("ages"))
health = (A.get("health"))

for i, j in zip(age, health):
    if i > 20 and j == "Good":
        dicts.setdefault("fit", []).append("yes")
    else:
        dicts.setdefault("fit", []).append("no")

print(dicts)