我有一个有八个键的字典列表,我想选择那些只有一个键不同的条目并合并它们。一个很小的例子:
listWithDups = [{'name1': 'aaa', 'len1': 3, 'site1': 'a', 'name2': 'zzzz', 'len2': 4, 'site2': 'z', 'retailer': 'ret1', 'buffer': 'buff1'},
{'name1': 'bbb', 'len1': 3, 'site1': 'b', 'name2': 'zzzz', 'len2': 4, 'site2': 'z', 'retailer': 'ret1', 'buffer': 'buff1'},
{'name1': 'aaa', 'len1': 3, 'site1': 'a', 'name2': 'zzzz', 'len2': 4, 'site2': 'z', 'retailer': 'ret1', 'buffer': 'buff2'}]
第一个列表项和最后一个列表项在键“buffer”中不同,因此我需要一个字典列表,如:
listWithoutDups = [{'name1': 'aaa', 'len1': 3, 'site1': 'a', 'name2': 'zzzz', 'len2': 4, 'site2': 'z', 'retailer': 'ret1', 'buffer': 'buff1 / buff2'},
{'name1': 'bbb', 'len1': 3, 'site1': 'b', 'name2': 'zzzz', 'len2': 4, 'site2': 'z', 'retailer': 'ret1', 'buffer': 'buff1'}]
我想按名称标识符对字典列表进行排序,并检查附近的每两个字典,如果它们在这个名称组合中不同,如果它们不同,我将在一个新列表中编写第一个字典并遍历整个列表,否则我将添加一个重复的字典,用字符串串联合并缓冲区键然后继续列表的其余部分。在不设置多个词典列表的情况下,有没有简单的方法来完成这项任务?我如何用多个键来比较附近的元素?你知道吗
希望我的描述不要太混乱:/
假设只有缓冲区不同,并且只使用其他两个键:
这是一个想法,扩展到更多的键作为练习给读者。你知道吗
结果是dict,key是惟一的
name1
/len1
,value是为这个键组合找到的所有缓冲区的列表。你知道吗因此,要将其转换回词典列表:
在Python中,使用的字典越多,解决方案就越pythonic!你知道吗
相关问题 更多 >
编程相关推荐