我在寻找此问题的解决方案时遇到了一些麻烦。我需要比较字典中属于不同键的项目。如果比较等于我的参数,则需要在这个完全相同的字典的新键中插入第三个(新)元素。以下是我打算做的一个例子。希望它更容易理解:
A={"names":["jason","peter","mary"],"ages":[25,35,45],"health":["Good","Good","Poor"]}
我需要分别比较"ages"
的每个值和"health"
的每个项目。如果"ages"
中的值> 20并且"health"
中的值是"Good"
,则需要将值"yes"
或"no"
添加到新密钥{{ 1}},根据之前进行的比较结果。
我一直在寻找所有可能的方法来做到这一点,但没有奏效。
答案 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)