Редактировать значения в словаре - PullRequest
0 голосов
/ 10 мая 2018

У меня есть словарь

TestDict = {'Group1': 'Crew 1', 'Group2': 'Crew 2', 'Group3': 'Crew 3'}

И я хотел бы отредактировать value в словаре, чтобы получить желаемый результат

{'Group1': 'Group1_Crew_1', 'Group2': 'Group2_Crew_2', 'Group3': 'Group3_Crew_3'}

Так что в приведенном выше примереkey теперь является частью value, и пространство было заменено на _

До сих пор я только пытался заняться добавлением ключа к значению с помощью

for key, value in TestDict.items():
    newDict = {key: key + "_" + value for key in TestDict}

Проблемно, это выводит в правильном словаре, однако, все значения Group3_Crew 3.Я не уверен, как решить эту проблему.

Ответы [ 3 ]

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

У вас есть два варианта:

Создайте новый словарь и обновите его содержимое:

newDict = {}
for key, value in TestDict.items():
    newDict[key] = key + "_" + value.replace(" ", "_")

или используйте сложное понимание:

newdDict = {key: key + "_" + value.replace(" ", "_") for key in TestDict}

Вы были каксмешивая обе концепции.

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

У вас две проблемы.

Во-первых, вы дважды перебираете TestDict, где вам нужно сделать это только один раз. Вы воссоздаете всю новую версию newDict каждый раз в цикле, и после того, как вы закончите, вы видите только последнюю созданную.

Используйте либо

 newDict = {} 
 for key, value in TestDict.items():
     newDict[key] = key + "_" + value

или

 newDict = {key: key + "_" + value for key, value in TestDict.items()}

но не комбинируйте оба.

(Результаты вы видите, потому что вы получаете новый key в каждой внутренней итерации, но только один value от внешней итерации.)

Кроме того, вы не заменяете пробелы подчеркиванием, что можно сделать, заменив value на value.replace(' ', '_') в любой версии.

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

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

{k: k+'_'+v.replace(' ', '_') for k, v in TestDict.items()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...