【发布时间】:2018-06-05 12:30:55
【问题描述】:
抱歉题目含糊不清,我很难解释。
我有一本字典,其中每个值都是一个项目列表。我希望删除重复的项目,以便每个项目在列表中出现的次数最少(最好是一次)。
考虑字典:
example_dictionary = {"weapon1":[1,2,3],"weapon2":[2,3],"weapon3":[2,3]}
'weapon2' 和 'weapon3' 具有相同的值,所以它应该导致:
result_dictionary = {"weapon1":[1],"weapon2":[3],"weapon3":[2]}
由于我不介意顺序,它也可能导致:
result_dictionary = {"weapon1":[1],"weapon2":[2],"weapon3":[3]}
但是当“别无选择”时,它应该离开该值。考虑一下这本新字典:
example_dictionary = {"weapon1":[1,2,3],"weapon2":[2,3],"weapon3":[2,3],"weapon4":[3]}
现在,由于它不能只分配一次“2”或“3”而不将键留空,因此可能的输出是:
result_dictionary = {"weapon1":[1],"weapon2":[3],"weapon3":[2],"weapon4":[3]}
我可以将问题放松到仅第一部分并进行管理,尽管我更喜欢将两个部分一起解决
【问题讨论】:
-
你能解释一下为什么 Weapon1 在结果中有 [1] 吗?武器 2 和武器 3 将从第一个武器 1 [1,2,3] 中获取值?
-
@AyodhyankitPaul weapon1 是唯一一个在他的列表中有 [1] 的人,这就是它有 [1] 的原因。武器 2 和武器 3 都有 [2,3],所以每个都有一个单独的数字,其中一个得到 [2],另一个得到 [3]
标签: python dictionary duplicates dictionary-comprehension