Как сравнить два значения в словаре и вернуть третье, если условие выполнено? - PullRequest
0 голосов
/ 15 апреля 2019

У меня возникли проблемы с поиском решения этой проблемы.Мне нужно сравнить элементы, принадлежащие к различным ключам в словаре.Если сравнение соответствует моему параметру, мне нужно вставить третий (новый) элемент в новый ключ этого же словаря.Ниже приведен пример того, что я намерен сделать.Надеюсь, это облегчает понимание:

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

Мне нужно сравнить каждое значение "ages" с каждым элементом "health" соответственно.Если значение в "ages" равно> 20, а значение в "health" равно "Good", мне нужно добавить значения "yes" или "no" к новому ключу "fit" в этом словаре в соответствии с результатамисравнения, проведенные ранее.

Я искал все возможные способы сделать это, но это не сработало.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Вы можете сделать это простым способом и понять, новичок ли вы в программировании на 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)
0 голосов
/ 15 апреля 2019

Ваши данные плохо организованы; 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'])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...