Преобразование списка в список словарей в python 3

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

result = {"name":"testipgroup",
          "ips": ["10.1.1.7","10.1.1.8"],
          "team_name": "avengers"}

Мне нужен вывод в таком формате:

result = {"name":"testipgroup",
          "ips": [{"name":"IP_10.1.1.7", "value":"10.1.1.7"}],
          "team_name": "avengers"}

Моя реализация включает в себя извлечение списка 'ips' из результирующего dict, перебор списка, выполнение преобразований и последующее добавление нового списка dicts к результат dict следующим образом:

a = result.pop("ips")
result["ips"] = []
for item in a:
    ip_dict = {}
    ip_dict.update({"name": "IP_" + str(item), "value": str(item)})
    result["ips"].append(ip_dict)

Есть ли более чистый способ сделать это, не открывая и не создавая новый массив и делая это непосредственно в dict результат

0
0
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

result['ips'] = [{'name': 'IP_' + i, 'value': i} for i in result['ips']]

result станет:

{'name': 'testipgroup', 'ips': [{'name': 'IP_10.1.1.7', 'value': '10.1.1.7'}, {'name': 'IP_10.1.1.8', 'value': '10.1.1.8'}], 'team_name': 'avengers'}

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

result['ips'] = [{ 'name':'IP_' + ip, 'value': ip } for ip in result['ips']]

в чем разница между этим и ответом, который дал @blhsing?

Onyambu 10.08.2018 15:46

@Onyambu Без разницы. Я печатал его одновременно, но он / она отправил первым.

David Meza 10.08.2018 15:49

Другие вопросы по теме