[英]How do I merge two lists of dicts with list of list in python?
如何定義 function
def join_data(data_1, data_2):
#code
return joined_data
在哪里
data_1 = [{'paths': [[1,2,3]], 'pos': 1}, {'paths': [[1,2,3]], 'pos': 2},]
data_2 = [{'paths': [[6,7,8]], 'pos': 1}, {'paths': [[4,5,6]], 'pos': 2},]
function 應通過檢測兩個數據中的 pos(始終為 1 值)是否相同,將路徑加入同一個列表,這樣 output 是
joined_data = [{'paths': [[1,2,3][6,7,8]], 'pos': 1}, {'paths': [[1,2,3][4,5,6]], 'pos': 2},]
如果我有任何不清楚的地方,我深表歉意,並感謝您的幫助。
您可以使用以“pos”鍵的值作為其鍵的中間字典,並將 pos 字典的“路徑”列表合並為值。 然后從中間字典的項目中構建您的列表海灣重組字典:
data_1 = [{'paths': [[1,2,3]], 'pos': 1}, {'paths': [[1,2,3]], 'pos': 2},]
data_2 = [{'paths': [[6,7,8]], 'pos': 1}, {'paths': [[4,5,6]], 'pos': 2},]
merged = dict()
for d in data_1 + data_2:
merged.setdefault(d['pos'],[]).extend(d['paths'])
merged = [ {'paths':v, 'pos':p} for p,v in merged.items() ]
print(merged)
[{'paths': [[1, 2, 3], [6, 7, 8]], 'pos': 1},
{'paths': [[1, 2, 3], [4, 5, 6]], 'pos': 2}]
使用以下function;
def join_data(data_1, data_2):
joined_data = []
for i in data_1:
for j in data_2:
if (i['pos'] == j['pos']):
joined_data.append({'paths': [i['paths'], j['paths']], 'pos': j['pos']})
return joined_data
Output:
[{'paths': [[[1, 2, 3]], [[6, 7, 8]]], 'pos': 1},
{'paths': [[[1, 2, 3]], [[4, 5, 6]]], 'pos': 2}]
從一個列表附加到另一個列表的 function 可能是這樣的:
def join_data(data_1, data_2):
joined_data = data_1.copy()
for dic in data_2:
pos = dic['pos']
path_items = dic['paths']
for d in joined_data:
if d['pos'] == pos:
d['paths'].extend(path_items)
return joined_data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.