python - 删除python中字典值中的重复项

标签 python dictionary duplicates dictionary-comprehension

不好意思题目含糊不清,不好解释。

我有一本字典,其中每个值都是一个项目列表。我希望删除重复的项目,以便每个项目在列表中出现的次数最少(最好一次)。

考虑字典:

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]}

我可以将问题放宽到只有第一部分并进行管理,尽管我更喜欢两个部分一起解决

最佳答案

#!/usr/bin/env python3

example_dictionary = {"weapon1":[1,2,3],"weapon2":[2,3],"weapon3":[2,3]}

result = {}
used_values = []

def extract_semi_unique_value(my_list):
    for val in my_list:
        if val not in used_values:
            used_values.append(val)
            return val
    return my_list[0]

for key, value in example_dictionary.items():
    semi_unique_value = extract_semi_unique_value(value)
    result[key] = [semi_unique_value]

print(result)

关于python - 删除python中字典值中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948519/

相关文章:

python - buildout.cfg 中的版本范围

python - 如何使用单个列表创建字典?

python - 如何从字典列表中获取字典的数据

c# - linq sql查找重复项但将null和空字符串视为相同

python - 如何在Tensorflow中删除张量中的重复值?

c# - 从非常大的文本文件中删除重复的字符串

python - 在 Windows 上的 Python 中按类型删除文件

python - Spark 中 Python 列的总和

powershell - 在powershell中的有序字典中查找键的索引

Python:检查字符串及其子字符串是否存在于同一个列表中