Python 获取共享相同列表值及其公共值的所有字典键的字典
我有一个列表字典,希望将共享重复列表的键合并到一个字典中的单独列表中,该字典还包含它们共享的原始列表 我曾尝试使用适用于哈希类型的现有解决方案,例如当字典仅包含字符串作为值时。相关的,所以可以找到问题。每次我尝试这些解决方案中的任何一种,或者尝试使用类似技术的任何其他解决方案,都会导致一个不可修复的类型错误 下面是我的字典的一个例子Python 获取共享相同列表值及其公共值的所有字典键的字典,python,python-3.x,list,loops,dictionary,Python,Python 3.x,List,Loops,Dictionary,我有一个列表字典,希望将共享重复列表的键合并到一个字典中的单独列表中,该字典还包含它们共享的原始列表 我曾尝试使用适用于哈希类型的现有解决方案,例如当字典仅包含字符串作为值时。相关的,所以可以找到问题。每次我尝试这些解决方案中的任何一种,或者尝试使用类似技术的任何其他解决方案,都会导致一个不可修复的类型错误 下面是我的字典的一个例子 exampledict = {'FOO': [1, 2, 3, 4, 25, 9], 'BAR': [1, 2], 'BAZ': [1, 2], 'ABC': [1
exampledict = {'FOO': [1, 2, 3, 4, 25, 9], 'BAR': [1, 2], 'BAZ': [1, 2], 'ABC': [1, 2, 3, 4, 25, 9]}
正确的输出应该是两个字典:
finaldict1 = {'keys': ['BAR', 'BAZ'], 'value': [1, 2]}
finaldict2 = {'keys': ['FOO', 'ABC'], 'value': [1, 2, 3, 4, 25, 9]}
您可以尝试:
from operator import itemgetter
from itertools import groupby
final_dicts = [{'keys': [e[0] for e in v], 'value': k} for k, v in groupby(sorted(exampledict.items(), key=itemgetter(1)), key=itemgetter(1))]
finaldict1 , finaldict2 = final_dicts
print(finaldict1)
print(finaldict2)
输出:
{'keys': ['BAR', 'BAZ'], 'value': [1, 2]}
{'keys': ['FOO', 'ABC'], 'value': [1, 2, 3, 4, 25, 9]}
在本例中,恰好您有2个dicts,但您可以根据需要使用final_dicts变量
Ex.
from collections import defaultdict
exampledict = {'FOO': [1, 2, 3, 4, 25, 9], 'BAR': [1, 2], 'BAZ': [1, 2], 'ABC': [1, 2, 3, 4, 25, 9]}
newMap = defaultdict(set)
for key, value in exampledict.items():
newMap[tuple(value)].add(key)
result = [{'keys':list(newMap[x]),'value':list(x)} for x in newMap ]
print(result)
O/p:
[{'keys': ['FOO', 'ABC'], 'value': [1, 2, 3, 4, 25, 9]}, {'keys': ['BAR', 'BAZ'], 'value': [1, 2]}]
你们试过什么了吗?在你们和你们的问题给出的链接中,不同之处在于,在你们的案例中,值是列表,而在已经回答的问题中,值是词典。这就不同了。您必须比较值(列表)是否相等