gpt4 book ai didi

python - 检查 Python 字典中列表中的重复元素

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:54 24 4
gpt4 key购买 nike

我有一个字典,其中可以有多达 N 个键,每个键都附有一个列表。我需要从字典中的所有其他列表中检查一个列表中的唯一元素。

字典结构示例:

dict = {'N1': ['e1', 'e2', ...], 'N2': ['e1', 'e3', ...], 'N...': [....], ....}

然后我需要将它们附加到同一键下的不同字典中,但只有列表中的唯一元素

return_dict = {'N1': ['e2'], 'N2': ['e3'], 'N...': [...], ...}

我希望这里有足够的信息来理解我的问题。如果有人可以帮助我想出一种方法来轻松地做到这一点,那将不胜感激。

编辑:我也不允许导入任何东西。今天没有方便的进口。 :(

最佳答案

对于不涉及导入的解决方案(叹息),我们首先通过列出每个值列出它所在的内容来“反转”字典:

d = {'N1': ['e1', 'e2'], 'N2': ['e1', 'e3']}

inverse = {item: [key for key,ls in d.items() if item in ls]
for item in set(sum(d.values(),[]))
}

在我们的例子中,inverse 现在是 {'e1': ['N1', 'N2'], 'e3': ['N2'], 'e2': [ 'N1']}。现在我们只需要再次“反转”这个字典,确保忽略重复项:

ret = {key: [item for item in count if key in count[item] and len(count[item]) == 1]
for key in set(sum(count.values(),[]))
}

ret 然后是 {'N1': ['e2'], 'N2': ['e3']}


其中最有趣的部分可能是将 itertools.chain.from_iterable 重新实现为 lambda x: sum(x, []):并不常见使用 sum 的第二个参数允许您设置一个起始值,并且由于您可以将列表“添加”在一起,这将采用一系列列表并生成一个新的大列表。

关于python - 检查 Python 字典中列表中的重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40854362/

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