根据匹配的 key:value 对将嵌套词典合并到嵌套词典列表中
combine nested dictionaries in list of nested dictionaries based on matching key:value pair
我尝试 google 并发现了一个与我的用例非常相似的问题:。但它似乎并不 100% 符合我的情况,因为我有嵌套词典列表。假设我有一个嵌套词典列表(超过 2 个),但在这种情况下,我考虑了两个嵌套词典来制作示例:
my_list = [{'sentence': ['x',
'ray',
'diffractometry',
'has',
'been',
'largely',
'used',
'thanks',
'to',
],
'mentions': [{'mention': [27, 28],
'positives': [26278, 27735, 21063],
'negatives': [],
'entity': 27735}]},
{'sentence': ['x',
'ray',
'diffractometry',
'has',
'been',
'largely',
'used',
'thanks',
'to',
],
'mentions': [{'mention': [13, 14],
'positives': [7654],
'negatives': [],
'entity': 7654}]}]
如何根据键(句子)和值(所有标记的列表)的匹配合并这两个词典,以便获得如下所需的结果:
my_new_list = [
{'sentence': ['x',
'ray',
'diffractometry',
'has',
'been',
'largely',
'used',
'thanks',
'to',
],
'mentions': [
{'mention': [27, 28],
'positives': [26278, 27735, 21063],
'negatives': [],
'entity': 27735
},
{'mention': [13, 14],
'positives': [7654],
'negatives': [],
'entity': 7654
}
]
}
]
如何在匹配key(sentence):value(list of all tokens)时合并key“mentions”列表?在我的实际列表中,会有很多相同风格的词典。
非常感谢您的帮助。
据我了解,您想按“句子”对信息进行分组。
您可以通过遍历数组并填充由句子索引的列表字典来完成此操作。
类似于:
from collections import defaultdict
sentences = defaultdict(list)
for element in my_list:
key = tuple(element["sentence"])
sentences[key].append(element)
这给了你
{ sentence1: [element1, element2], sentence2: [element3] }
从那里应该可以轻松构建你想要的结构。
编辑 删除了对特定字段的引用
my_dict = {}
for row in my_list:
key = ' '.join(row['sentence']) # use sentence as key
if key in my_dict:
my_dict[key]['mentions'].extend(row['mentions'])
else:
my_dict[key] = row
my_list = list(my_dict.values())
我尝试 google 并发现了一个与我的用例非常相似的问题:
my_list = [{'sentence': ['x',
'ray',
'diffractometry',
'has',
'been',
'largely',
'used',
'thanks',
'to',
],
'mentions': [{'mention': [27, 28],
'positives': [26278, 27735, 21063],
'negatives': [],
'entity': 27735}]},
{'sentence': ['x',
'ray',
'diffractometry',
'has',
'been',
'largely',
'used',
'thanks',
'to',
],
'mentions': [{'mention': [13, 14],
'positives': [7654],
'negatives': [],
'entity': 7654}]}]
如何根据键(句子)和值(所有标记的列表)的匹配合并这两个词典,以便获得如下所需的结果:
my_new_list = [
{'sentence': ['x',
'ray',
'diffractometry',
'has',
'been',
'largely',
'used',
'thanks',
'to',
],
'mentions': [
{'mention': [27, 28],
'positives': [26278, 27735, 21063],
'negatives': [],
'entity': 27735
},
{'mention': [13, 14],
'positives': [7654],
'negatives': [],
'entity': 7654
}
]
}
]
如何在匹配key(sentence):value(list of all tokens)时合并key“mentions”列表?在我的实际列表中,会有很多相同风格的词典。
非常感谢您的帮助。
据我了解,您想按“句子”对信息进行分组。
您可以通过遍历数组并填充由句子索引的列表字典来完成此操作。
类似于:
from collections import defaultdict
sentences = defaultdict(list)
for element in my_list:
key = tuple(element["sentence"])
sentences[key].append(element)
这给了你
{ sentence1: [element1, element2], sentence2: [element3] }
从那里应该可以轻松构建你想要的结构。
编辑 删除了对特定字段的引用
my_dict = {}
for row in my_list:
key = ' '.join(row['sentence']) # use sentence as key
if key in my_dict:
my_dict[key]['mentions'].extend(row['mentions'])
else:
my_dict[key] = row
my_list = list(my_dict.values())