Добавление нового ключа ко всем ключам в словаре Python - PullRequest
0 голосов
/ 05 мая 2018

У меня сейчас есть этот дикт:

initial_dict = {'val_1': 2, 'val_2': 4}

И я ищу более эффективный способ добавить новый ключ 'foo' ко всем ключам, чтобы получить:

final_dict = {('foo' ,'val_1'): 2, ('foo' ,'val_2'): 4}

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Если вы действительно хотите, вы можете пересоздать словарь, используя понимание:

new_dict = {('foo', k) : v for k, v in initial_dict.items()}

print(new_dict)
{('foo', 'val_1'): 2, ('foo', 'val_2'): 4}

Для индексации вы теперь используете new_dict[('foo', 'val_1')].

Однако, похоже, вы пытаетесь создать многоиндексированный словарь. Почему бы не сделать это вложенным диктом вместо этого?

new_dict = {'foo' : initial_dict}

print(new_dict)
{'foo': {'val_1': 2, 'val_2': 4}}

Теперь вам нужно просто сделать new_dict['foo']['val_1'], чтобы добиться того же эффекта. Это намного быстрее и дешевле построить, потому что вы повторно используете то, что у вас уже есть, вместо того, чтобы заново создавать его с нуля.

0 голосов
/ 05 мая 2018

Я верю, что вы хотите dict comprehension

>>> { ('foo', key): val for key, val in initial_dict.items()}
{('foo', 'val_1'): 2, ('foo', 'val_2'): 4}
...