我有一个场景,我有三个字典,我想合并成一个,但条件是当我将这三个字典与键name
进行比较时,如果有重复的字典需要删除它们
以下是我尝试过的:
dict1= {'d1': [{'name': 'app1', 'id': 7134}, {'name': 'app2', 'id': 242}, {'name': 'yest app', 'id': 67},{'name': 'abc jam app', 'id': 6098}]}
dict2= {'d2': [{'name': 'app1 ', 'id': 30}, {'name': 'app2', 'id': 82}, {'name': 'yest app', 'id': 17}]}
dict3= {'d3': [{'name': 'app1', 'id': 70}, {'name': 'app2', 'id': 2582},{'name': 'availabla2z', 'id': 6667}]}
dict2 = {i:j for i,j in dict2.items() if i not in dict1}
dict3 = {i:j for i,j in dict3.items() if i not in dict2}
但同样的,我也不知道如何比较这三种格言。
因为如果你看数据dict1
有一个元素'name': 'app1'
,其中相同的元素在dict2
中,像这样'name': 'app1 '
(有一个空格),你不知道如何格式化它,并得到下面这样的最终结果
{'final': [{'name': 'app1 ', 'id': 30}, {'name': 'app2', 'id': 82}, {'name': 'yest app', 'id': 17},{'name': 'abc jam app', 'id': 6098},{'name': 'availabla2z', 'id': 6667}]}
您可以使用
defaultdict
通过name
将所有词典分组在一起:然后使用
min()
选择具有最小id
值的词典。这仍然适用于需求,因为它仍然选择一个字典并匹配请求的输出输出:
以下是可用的更新程序代码:
这使得:
下面是一个解决方案,它利用了这个other SO answer(对python-2.x替代方案很有用),无需任何特定规则即可删除重复项:
结果:
相关问题 更多 >
编程相关推荐