【问题标题】:Removing duplicate pairs in python only where the keys are the same仅在键相同的情况下删除python中的重复对
【发布时间】:2021-07-15 19:18:34
【问题描述】:

我希望删除 python 字典中的重复项,但仅限于键相同的地方。这是一个例子。

original_dict = {'question a' : 'pizza', 'question b' : 'apple', 'question a': 'banana'}

我想删除“问题 a”项目,因此只有一个“问题 a”。我面临的问题是价值观不一样。有什么方法可以在 Python 3.x 中轻松做到这一点?

【问题讨论】:

  • 如果你只想要一个问题a,你想保留哪一个?
  • 不可能! dict 只保留一个 key 实例。你不能有重复!

标签: python python-3.x dictionary


【解决方案1】:

definition,字典中每个键只保留 1 个值,因此您不会有重复项。在您的示例中,重复键的最后一个值将被保留(这就是“忘记与该键关联的旧值”的含义):

original_dict = {'question a' : 'pizza', 'question b' : 'apple', 'question a': 'banana'}
print(original_dict)
# {'question a': 'banana', 'question b': 'apple'}

来自docs

最好将字典视为一组键:值对,要求键是唯一的(在一个字典中)。 [...] 如果您使用已在使用的密钥进行存储,则与该密钥关联的旧值将被遗忘。

【讨论】:

  • 虽然文档确实说只有一个,但没有具体说明是哪一个。
  • @MarkRansom 感谢您的评论。用文档中的另一个引用更新了答案。
  • 文档的另一部分是否指定定义的顺序是从左到右?可能是这样,因为现在可以保证迭代顺序将匹配插入顺序。
  • 是的,没错!我试图解决一个不存在的问题哈哈。
  • 好吧,我现在很好奇,所以我把它作为一个问题发布:stackoverflow.com/q/68400435/5987
【解决方案2】:

Python 字典一开始就不允许重复。如果您创建了包含两个或多个相同键的字典,它将考虑最后一次出现的值而忽略值并删除其他值。

在这种情况下, 'question a': 'pizza' 将被删除,'question a': 'banana' 将被视为最后一次出现。

【讨论】:

  • 第一个被丢弃还是最后一个被丢弃?我从来没有这样做过,因为它不起作用,但你上面的答案与你所说的相反。
  • @Cfomodz 抱歉,第一个将被删除。它将考虑最后一个。让我编辑它!
  • @Cfomodz 我刚刚在 Python 3.8.6 中尝试过,它保持“香蕉”。
  • 我想像 ``` question a = 'pizza' question a = 'banana' ``` or ``` dict_of_things['thing one'] = Pizza dict_of_things['thing one'] =banana 总是会导致香蕉成为保留的值,但是分配有时会让人感觉“落后”所以老实说,我不是 100% 确定 python 将如何处理 dict = {'question a':'pizza','question a':'banana'}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多