如何在另一个字典中添加字典项

时间:2019-12-20 09:06:50

标签: python-3.x

这是我的病。

我有一个这样的词典列表:

 data = [{'id': '1', 'name': 'David', 'location': {'latitude': -12.2139, 'longitude': -77.0375}},
         {'id': '2', 'name': 'will', 'location': {'latitude': -22.2139, 'longitude': -87.0375}},
         {'id': '3', 'name': 'john', 'location': {'latitude': -32.2139, 'longitude': -97.0375}}]

预期输出为:

  data = [{'latitude': -12.2139, 'longitude': -77.0375,'name': 'David' },
          {'latitude': -22.2139, 'longitude': -87.0375, 'name': 'will'},
          {'latitude': -32.2139, 'longitude': -97.0375, 'name': 'john'}]

我该怎么做?

6 个答案:

答案 0 :(得分:1)

如果您想从数据内的 location 键中获取数据,则可以使用以下命令:

new_data = list() 
for item in data:
        tmp = dict()
        tmp['name'] = item.get('name')
        tmp.update(dict(item.get('location')))
        new_data.append(tmp)
#If you want the *data* to hold the variable:
#data = new_data

或更复杂的方法:

data = [{'name': item.get('name'), **item.get('location')} for item in data]

这将产生以下输出:

[{'name': 'David', 'latitude': -12.2139, 'longitude': -77.0375}, 
{'name': 'will', 'latitude': -22.2139, 'longitude': -87.0375}, 
{'name': 'john', 'latitude': -32.2139, 'longitude': -97.0375}]

答案 1 :(得分:1)

使用dict理解对象拆包。

例如:

data = [{'id': '1', 'name': 'David', 'location': {'latitude': -12.2139, 'longitude': -77.0375}},
         {'id': '2', 'name': 'will', 'location': {'latitude': -22.2139, 'longitude': -87.0375}},
         {'id': '3', 'name': 'john', 'location': {'latitude': -32.2139, 'longitude': -97.0375}}]
print([{'name': k['name'], **k['location']} for k in data])

输出:

[{'latitude': -12.2139, 'longitude': -77.0375, 'name': 'David'},
 {'latitude': -22.2139, 'longitude': -87.0375, 'name': 'will'},
 {'latitude': -32.2139, 'longitude': -97.0375, 'name': 'john'}]

答案 2 :(得分:0)

我已经弄清楚了自己的答案。

l = []
for ele in data:
  loc = ele.get('location')
  name = ele.get('name')
  loc.update(name=name)
  l.append(loc)

答案 3 :(得分:0)

使用for可以轻松完成。

[{**x['location'] ,**{"name":x["name"]}} for x in data]

答案 4 :(得分:0)

tmp = []
for dictionary in data:
    locationDict = dictionary["location"]
    locationDict["name"] = dictionary["name"]
    tmp.append(locationDict)

data = tmp

我会尝试的。对于每个字典,它都会接受子字典,并从原始字典中添加一个附加值。

答案 5 :(得分:0)

策略:

  1. 从具有键位置数据中获取值并将其存储在变量中
  2. 再次从具有键 name 数据获取值,并将其附加到数字 1
  3. 中使用的变量中
  4. 在上面的变量中打印值存储

[CODE]

datas = [{'id': '1', 'name': 'David', 'location': {'latitude': -12.2139, 'longitude': -77.0375}}, {'id': '2', 'name': 'will', 'location': {'latitude': -22.2139, 'longitude': -87.0375}}, {'id': '3', 'name': 'john', 'location': {'latitude': -32.2139, 'longitude': -97.0375}}]

for data in datas:
    var = data['location']  # Getting value having key locations
    var['name'] = data['name']   # Appending value of key "name"

    ''' You can also append by following ways:

        var.update({'name': data['name']}

                      OR

        var.update({'name': data.get('name')})'''

    print(var)