簡體   English   中英

如何將兩個字典列表與 python 中的列表合並?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM