这是我的病。
我有一个这样的词典列表:
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'}]
我该怎么做?
答案 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)
策略:
[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)