我有一個字典串列:
data = [
{"id": 55, "name": "Ram", "city": "kathmandu"},
{"id": 66, "name": "Hari", "city": "lalitpur"},
{"id": 77, "name": "Sita", "city": "kathmandu"},
{"id": 88, "name": "Geeta", "city": "pokhara"},
{"id": 99, "name": "Shyam", "city": "pokhara"},
{"id": 95, "name": "Parbati", "city": "bhaktapur"}
]
我希望預期的輸出為:
{'kathmandu': ['Ram', 'Sita'], 'lalitpur': ['Hari'], 'pokhara': ['Shyam', 'Geeta'], 'bhaktapur': ['Parbati']}
我的解決辦法是:
for i in data:
i[i.get('city')] = i['name']
del i['name']
del i['id']
del i['city']
new_data = data[::-1]
first_dict = dict((key, val) for k in data for key, val in k.items())
second_dict = dict((key, val) for k in new_data for key, val in k.items())
for key in first_dict:
if key in second_dict:
new_list = [first_dict[key],second_dict[key]]
new_list2 = list(set(new_list))
second_dict[key] = new_list2
c = {**first_dict, **second_dict}
print(c)
這產生了預期的結果。但是,我想知道此解決方案的任何替代方法。
uj5u.com熱心網友回復:
您可以使用setdefault:
result={}
for di in data:
result.setdefault(di['city'], []).append(di['name'])
>>> result
{'kathmandu': ['Ram', 'Sita'], 'lalitpur': ['Hari'], 'pokhara': ['Geeta', 'Shyam'], 'bhaktapur': ['Parbati']}
uj5u.com熱心網友回復:
您有一個可行的解決方案,但您正在修改字典并完全重塑它。我建議只將您需要的資料放在 new_dict 中。
看起來像 defaultdict 的作業。
data = [
{"id": 55, "name": "Ram", "city": "kathmandu"},
{"id": 66, "name": "Hari", "city": "lalitpur"},
{"id": 77, "name": "Sita", "city": "kathmandu"},
{"id": 88, "name": "Geeta", "city": "pokhara"},
{"id": 99, "name": "Shyam", "city": "pokhara"},
{"id": 95, "name": "Parbati", "city": "bhaktapur"}
]
from collections import defaultdict
new_data = defaultdict(list)
for record in data:
city = record['city']
name = record['name']
new_data[city].append(name)
print(new_data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/368795.html
下一篇:在Prolog中提取其他元組成員
