конвертировать несколько словарей в один словарь в Python - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть несколько словарей с ключами и значениями, и я хочу назначить (перенести все из них в новый пустой словарь с сохранением всех ключей и значений. Примечание: у другого вопроса, который я проверял, есть словари с одинаковым размером

n = {}
x = {'six':6,'thirteen':13,'fifty five':55}
y = {'two': 2, 'four': 4, 'three': 3, 'one': 1, 'zero': 0,'ten': 10}
z = {'nine': 9, 'four': 4, 'three': 3, 'eleven': 11, 'zero': 0, 'seven':7}

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Используйте собственный метод обновления dict в таком цикле, как этот:

x = {'six':6,'thirteen':13,'fifty five':55}
y = {'two': 2, 'four': 4, 'three': 3, 'one': 1, 'zero': 0,'ten': 10}
z = {'nine': 9, 'four': 4, 'three': 3, 'eleven': 11, 'zero': 0, 'seven':7}

n = {}
for e in [x,y,z]:
    n.update(e)

Это быстро, если у вас есть всего несколько диктов.Но если у вас несколько диктовок (например, более 20), лучше использовать localals ().

n = {}
for e in "xyz":
    n.update(locals()[e])

Или если вы работаете с python3, есть более простой способ:

n = {**x, **y, **z}
0 голосов
/ 22 ноября 2018

Я читаю, ты хочешь дублировать ключи.Ключи dict являются уникальными, поэтому в этом случае преобразуйте данные в другие структуры данных, например в кортежи.

your_first_dict = {"a":1, "b":2, "c":3}
your_second_dict = {"a":3, "b":4, "d":5}
list_of_tuples = [(key,your_first_dict[key]) for key in your_first_dict]
list_of_tuples += [(key,your_second_dict[key]) for key in your_second_dict]
0 голосов
/ 21 ноября 2018

ChainMap

Для многих случаев использования collections.ChainMap достаточно и эффективно (предполагается Python 3.x):

from collections import ChainMap

n = ChainMap(x, y, z)

n['two']       # 2
n['thirteen']  # 13

Если вам нужнословарь, просто вызовите dict на объекте ChainMap:

d = dict(n)

Распаковка словаря

С Python 3.x, ( PEP448 ), вы можетераспакуйте ваши словари, как вы определяете новый словарь:

d = {**x, **y, **z}

Связанный: Как объединить два словаря в одном выражении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...