【问题标题】:Python: How to remove duplicate values for one key inside a dictionary? [duplicate]Python:如何删除字典中一个键的重复值? [复制]
【发布时间】:2020-02-10 06:58:00
【问题描述】:

我有一本字典,其中一个键的值重复。如何删除重复项?

初始字典:

dict = {"a": [1, 1, 1, 2, 1, 3, 2, 3, 1], "b": [4, 5, 2, 1, 1, 5, 6, 2, 5]}

想要的字典:

dict = {"a": [1, 2, 3], "b": [4, 5, 2, 1, 6]}

【问题讨论】:

  • 不要使用 dict 作为名称,它会影响内置的dict

标签: python python-3.x list dictionary duplicates


【解决方案1】:

使用字典理解构建一个新字典,通过使用set消除重复:

dict = {"a": [1, 1, 1, 2, 1, 3, 2, 3, 1], "b": [4, 5, 2, 1, 1, 5, 6, 2, 5]}
dict = { key : list(set(value)) for key, value in dict.items()}

list 转换为set 会删除重复项。然后我们将其转换回list。请注意,它不一定保留每个列表中项目的原始顺序。

【讨论】:

    【解决方案2】:

    1- 解决方案 1:如果您在构建数据时可以控制数据,则将数据存储在一个集合中,而不是作为一个列表

    2- 解决方案2:如果数据来自api或数据库,那么您可以通过以下方式处理数据:

    dictionary = {"a": [1, 1, 1, 2, 1, 3, 2, 3, 1], "b": [4, 5, 2, 1, 1, 5, 6, 2, 5]}
    for each_key, value in dictionary.items():
       dictionary[each_key] = list(set(value))
    

    注意:您会丢失列表的顺序。 此外,您不应将变量名称保留为 dict 作为它的 python 关键字

    【讨论】:

      【解决方案3】:

      你应该在内部使用 set 而不是 list。

      如果列表是您唯一想使用的东西,那么就这样做,

      myDict = dict({"a": [1, 1, 1, 2, 1, 3, 2, 3, 1], "b": [4, 5, 2, 1, 1, 5, 6, 2, 5]})
      
      for key,listOfDup in myDict.items():
          myDict[key] = list(set(listOfDup))
      

      【讨论】:

      • 为什么要重复调用set()
      • 哎呀,这是一个错字。谢谢,现在已编辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2016-07-07
      • 2016-06-11
      相关资源
      最近更新 更多