Dunaevlad
@Dunaevlad

Как найти в словаре нужное значение?

Есть два словаря:
teams = [
    {'team': 'Leicester City ', 'id': 1007732583, 'date': '2021-11-20T12:30:00Z'},
    {'team': 'Leicester City ', 'id': 1007732570, 'date': '2021-11-28T14:00:00Z'},
    {'team': 'Burnley ', 'id': 1007732584, 'date': '2021-11-20T15:00:00Z'},
    {'team': 'Burnley ', 'id': 1007732573, 'date': '2021-11-28T14:00:00Z'},
    {'team': ' Manchester United', 'id': 1007732585, 'date': '2021-11-20T15:00:00Z'},
    {'team': ' Manchester United', 'id': 1007732572, 'date': '2021-11-28T16:30:00Z'},
]

odds = [
    {'label': '1', 'team': 'Leicester City', 'odds': 4.55},
    {'label': 'X', 'team': 'draw', 'odds': 3.65},
    {'label': '2', 'team': 'Chelsea', 'odds': 1.79},
    {'label': '1', 'team': 'Leicester City', 'odds': 1.47},
    {'label': 'X', 'team': 'draw', 'odds': 4.75},
]

for i in teams:
    for j in odds:
        if i['team'] == j['team']:
            print(i['team'], j['odds'])  # => None

Какой есть лучший способ, найти значения ключа teams['team'], из словаря teams, в словаре odds, чтобы получить данные из odds['odds']. Т.е. если teams['team'](Leicester City) есть в odds, то тогда получить все значения odds['odds'].
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
@Wispik
Да, у тебя в коде проблема в пробелах (в начале и конце строки), но я бы сделал так:
1. Собрал бы все уникальные названия клубов в переменную:
_teams = set([x['team'].strip() for x in teams])
2. Дальше уже искал бы коэффициенты(так будет меньше итераций цикла):
for team in _teams:
	_odds = [x['odds'] for x in filter(lambda x: x['team'] == team, odds)]
	print(team, _odds)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 11:14
65000 руб./за проект
19 апр. 2024, в 11:08
5000 руб./за проект
19 апр. 2024, в 10:59
150000 руб./за проект