gpt4 book ai didi

Python:比较字典中键之间的值重叠

转载 作者:行者123 更新时间:2023-12-01 00:50:02 24 4
gpt4 key购买 nike

我有一个像这样的dict:

dict = defaultdict(list, {'a': [['1', '2', 'A', 'cat'],
['1', '3', 'A', 'dog']],
'b': [['1', '2', 'A', 'cat'],
['1', '3', 'A', 'dog']],
'c': [['1', '2', 'A', 'cat'],
['2', '2', 'A', 'snake'],
['2', '2', 'A', 'bird']]}

我想使用每个值的完整列表来获取重叠值的所有成对比较。 (值列表中的每个位置都必须匹配才能被视为键之间的匹配)

由于 ab 共享 ['1', '3', 'A', 'dog'] c 没有,a/b: ['1', '3', 'A', 'dog']

abc,全部共享['1', '2', 'A', 'cat ']a/b/c:['1','2','A','猫']

只有 c 具有 ['2', '2', 'A', 'snake'],因此 c: ['2', ' 2', 'A', '蛇']

首选输出是结合上述内容的字典,类似于

combine_dict = {'a/b': ['1', '3', 'A', 'dog'], 'a/b/c': ['1', '2', 'A', 'cat'], 'c': [['2', '2', 'A', 'snake'], ['2', '2', 'A', 'bird']]}

最佳答案

您可以使用collections.defaultdict:

import collections
d = {'a': [['1', '2', 'A', 'cat'], ['1', '3', 'A', 'dog']], 'b': [['1', '2', 'A', 'cat'], ['1', '3', 'A', 'dog']], 'c': [['1', '2', 'A', 'cat'], ['2', '2', 'A', 'snake'], ['2', '2', 'A', 'bird']]}
new_d = collections.defaultdict(list)
for a, b in d.items():
for i in b:
new_d[tuple(i)].append(a)


new_r = collections.defaultdict(list)
for a, b in new_d.items():
new_r['/'.join(b)].append(list(a))

new_result = {a:b[0] if len(b) == 1 else b for a, b in new_r.items()}

输出:

{'a/b/c': ['1', '2', 'A', 'cat'], 'a/b': ['1', '3', 'A', 'dog'], 'c': [['2', '2', 'A', 'snake'], ['2', '2', 'A', 'bird']]}

关于Python:比较字典中键之间的值重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56639693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com