gpt4 book ai didi

Python - 删除字典中的嵌套列表

转载 作者:行者123 更新时间:2023-11-28 22:19:38 27 4
gpt4 key购买 nike

我有一个名为 results 的字典。

字典的结构是这样的:

{'a': [['1', '2', '4'],['1', '2', '2'],['1', '2', '2']], 'b': [['2', '2', '4'],['2', '2', '2'],['1', '2', '4']], 'c': [['1', '2', '4'],['1', '2', '2'],['1', '2', '2']]}

我希望删除每个键的重复嵌套列表,因此将字典保留为:

{'a': [['1', '2', '4'],['1', '2', '2']], 'b': [['2', '2', '4'],['2', '2', '2'],['1', '2', '4']], 'c': [['1', '2', '4'],['1', '2', '2']]}

我试过:

newdict = {}
for k, v in results.items():
for i in v:
if i not in i:
newdict[k] = i

有什么帮助吗?提前致谢!

最佳答案

您的代码错误得无法修复(抱歉),主要是因为这两行:

 if i not in i:  # makes no sense testing if something is inside itself
newdict[k] = i # overwrites the key with one list

您必须计算每个列表,并且每个列表只保留一次。

如果顺序无关紧要,您可以使用嵌套的 dict/set/list comprehension 来实现。

results = {'a': [['1', '2', '4'],['1', '2', '2'],['1', '2', '2']], 'b': [['2', '2', '4'],['2', '2', '2'],['1', '2', '4']], 'c': [['1', '2', '4'],['1', '2', '2'],['1', '2', '2']]}

newdict = {k:[list(y) for y in {tuple(x) for x in v}] for k,v in results.items()}

print(newdict)

结果:

{'a': [['1', '2', '2'], ['1', '2', '4']], 'b': [['2', '2', '4'], ['1', '2', '4'], ['2', '2', '2']], 'c': [['1', '2', '2'], ['1', '2', '4']]}

使用 set 可以保持唯一性,但不能将 list 放入 set 中,因此表达式转换为 tuple 首先(它是可散列的),并在处理完成后转换回 list

关于Python - 删除字典中的嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49587431/

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