Как добавить списки словарей в другой словарь?

#python #dictionary

#python #словарь

Вопрос:

У меня есть этот словарь «свойства» с ключом, livenessTests и, в свою очередь, livenessTests это список словарей. Как мне добавить / дописать livenessTests к другому словарю json ?

 properties = {

'livenessTests': [

{

'name':'http'   '_'   'livenesstest',

'testObject':'/default.html'

},

{

'name':'https'   '_'   'livenesstest',

'testObject':'/default.html'

}
]
  

Результирующий каталог «json» должен быть чем-то вроде

 json : {

"acg": {

"id": "1.87",

"name": "Internal"

},

"asmappings": [],

"cidrMaps": [],

"properties": {"livenessTests" : [{<contents from list above>},
                                  {<contents from list above>}
                                 ] 

              }
  

Я пытаюсь это

 for key in properties.keys():
    print key
    json['properties'].append(property[key])
  

Я получаю эту ошибку,

 > json['properties'].append(properties[key])

KeyError: 'properties'
  

Что я здесь делаю не так? Извините, новичок в изучении. Спасибо

Комментарии:

1. Поскольку ответы приведены ниже, просто небольшой комментарий. нехорошо использовать json в качестве имени словаря, поскольку существует также пакет с именем json.

Ответ №1:

Используйте метод обновления словаря.

 json.update(properties)
  

Пример:

 properties = {    
'livenessTests': [
    {'name':'http'   '_'   'livenesstest',
    'testObject':'/default.html'
    },
    {
    'name':'https'   '_'   'livenesstest',
    'testObject':'/default.html'
    }
]}

json = {"acg": {
    "id": "1-7KLGU.G19717",
    "name": "Akamai Internal-1-7KLGU - 1-7KLGU.G19717"
    },
    "asmappings": [],
    "cidrMaps": [],
    "livenessTests" : []
    }

json.update(properties)
print json
  

Ответ №2:

Вы пытаетесь найти ключ properties в json , но, как вы можете видеть в опубликованном вами словаре, ключа там нет properties . Если вы хотите создать новый список словарей в json словаре, сначала вам нужно объявить его.

 json['properties'] = []  # Missing this!

for key in properties.keys():
    print key
    json['properties'].append(property[key])
  

Комментарии:

1. Извините, я улучшил свой вопрос, чтобы он был корректным. Методы, предложенные в ответах, дают «livenessTests»: [ { «name»: «http_livenessTest», «TestObject»: «/default.html » }, Но я надеялся получить «свойства»: [ {«livenessTests»: [ { «name»: «Тестирование отработки отказа», «TestObject»: «/default.html » } ], } Нужно ли мне где-то указывать свойства в качестве ключа?

2. Lol … это был не тот вопрос, который вы изначально задавали. Но ладно.