#python #dictionary #flask #jinja2
#python #словарь #flask #jinja2
Вопрос:
У меня есть эти два словаря Python с указанием местоположения и количества.
A: {'Pompano Beach': ['13'], ' Miami': ['18'], ' W. Palm Beach': ['18']}
B: {'Atlanta': ['25'], 'Las Vegas': ['50 ']}
Мне нужно распечатать их в HTML-таблице. В настоящее время я использую flask с шаблонами jinja2.
Я хотел бы иметь свои результаты в виде:
C: {'Pompano Beach': ['13', '0'], ' Miami': ['18', '0'], ' W. Palm Beach': ['18', '0'], 'Atlanta': ['0','25'], 'Las Vegas': ['0', '50 ']}
Где индекс 0 в каждом значении списка соответствует количеству A, а индекс 1 соответствует количеству B.
Кроме того, если город не существует в B, добавьте 0. То же самое, если он не существует в A, тогда добавьте 0 в соответствующий индекс.
Я не уверен, есть ли более простое решение, но я пришел к тому, что считаю, что это то, что мне нужно, чтобы сохранить мой стиль с помощью шаблонов jinja2.
Ответ №1:
Вы можете использовать понимание dict при использовании .get
со значением по умолчанию ['0']
:
C = {k: A.get(k, ['0']) B.get(k, ['0']) for k in list(A) list(B)}
print(C)
выходные данные
{'Pompano Beach': ['13', '0'], ' Miami': ['18', '0'], ' W. Palm Beach': ['18', '0'],
'Atlanta': ['0', '25'], 'Las Vegas': ['0', '50 ']}
Вы можете получить тот же результат, избегая создания 2 дополнительных списков с
C = {k: A.get(k, ['0']) B.get(k, ['0']) for k in A.keys() | B.keys()}