Эффективно переименовывайте ключи в словаре - PullRequest
0 голосов
/ 21 июня 2020

У меня есть словарь вида
{0: -1.0, 21: 2.23, 7: 7.1, 46: -12.0}.

Как я могу превратить это в
{'p0': -1.0, 'p21': 2.23, 'p7': 7.1, 'p46': -12.0}

эффективно, например:

без a для l oop и что-то вроде dict[key[i]] = dict.pop("p"+str(key[i]))?

Ответы [ 2 ]

6 голосов
/ 21 июня 2020

Вы можете использовать понимание словаря:

d = {0: -1.0, 21: 2.23, 7: 7.1, 46: -12.0}

d = {f"p{k}":v for k,v in d.items()}

print(d)

Вывод:

{'p0': -1.0, 'p21': 2.23, 'p7': 7.1, 'p46': -12.0}

Обратите внимание, что это тоже будет работать:

d = {f"p{k}":d[k] for k in d}
0 голосов
/ 21 июня 2020

Упоминание в вопросе о назначении элементов и pop предлагает вам sh изменить существующий словарь. К сожалению, вы можете использовать только доступные методы, а способа переименовать ключ нет. Вместо того, чтобы выполнять повторное присвоение и извлечение элементов, другой вариант - просто полностью очистить словарь и update из полностью нового словаря, содержащего измененные ключи. Например:

d1 = d.copy()
d.clear()
d.update({"p" + str(k): v for k, v in d1.items()})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...