【问题标题】:Find common dictionary values in list of dictionary - python在字典列表中查找常用字典值 - python
【发布时间】:2019-02-21 00:13:44
【问题描述】:

我有一个这样的字典列表:

[{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}, {'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}, {'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}, {'Y': 82, 'X': 72, 'C': 3, 'L': 'E'}, {'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}]

分解更容易阅读

{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}

{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}

{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}

{'Y': 82, 'X': 72, 'C': 3, 'L': 'E'}

{'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}

我想找到'Y'和'X'相同的两个字典。然后删除两个字典之一并更新生成的'C'

{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}

{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}

{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}

{'Y': 83, 'X': 73, 'C': 3, 'L': 'F'}

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只会在发布者已经尝试自己解决问题时提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 另外,'Y''X' 值相同的两个字典中的哪一个被删除是否重要?与您的示例不同,保留最后一个并删除其他会更方便。此外,在您的示例中,输入列表中的最终字典具有键 4 的值 'C',但结果具有值 3
  • 不,删除哪个字典都没有关系。目标是拥有独特的“Y”和“X”。 C 代表一个计数器,所以想更新它

标签: python list dictionary


【解决方案1】:

又快又脏:

d = [
{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'},
{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'},
{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'},
{'Y': 82, 'X': 72, 'C': 3, 'L': 'E'},
{'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}
]



Xs = [] 
Ys = []
c = 0
out = []

for i in range(len(d)):
  obj = dict(d[i]) # Copy the dict at index i
  if (obj["X"], obj["Y"]) in XYs:
    XYs.append((obj["X"], obj["Y"]))
  else:
    obj["C"] = c
    c = c + 1
    out.append(obj)
    XYs.append((obj["X"], obj["Y"]))

编辑:通过存储唯一元组对其进行改进

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 2013-06-13
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2014-07-21
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多