繁体   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