python - 查找数组中具有重复键值的 dict 对象

标签 python python-3.x

我有一个包含 dict 对象的列表,一个 dict 代表我的 MySQL 数据库中的一条记录。所以我想找到 title 键值重复的每个字典,然后更新重复的项目。

所以我有这样的东西:

dict1 = {"id":1234,"title":"apple"}
dict2 = {"id":1235,"title":"orange"}
dict3 = {"id":1236,"title":"apple"}
dict4 = {"id":1237,"title":"kiwi"}

results = [dict1,dict2,dict3,dict4]

我想最终得到这样的结果:

dict1 = {"id":1234,"title":"apple"}
dict2 = {"id":1235,"title":"orange"}
dict3 = {"id":1236,"title":"apple 2"}
dict4 = {"id":1237,"title":"kiwi"}

这是我的尝试,但行不通。当我运行它时, if 语句永远不会为真。 (注意:我正在使用 peewee 并且从数据库获取基本数组,因此我正在访问像这样的值 obj.title,但我假设这些对象可以作为简单的字典)

objects = mydb.select().where(mydb.title.contains("usa"))

objectsB = objects

for obj in objects:
    for obj2 in objectsB:
        if obj.title is obj2.title and obj.objectId is not obj2.objectId:
            obj2.title = "%s Duplicate" %  (obj.title,) 
            print(obj2.title)

如您所见,我有另一个键,objectId,它始终不同,因此可用于在 for 循环期间查找重复条目。然而,我无法找出正确的方法来做到这一点,因此,如果有人能告诉我我做错了什么,我将非常感激。

最佳答案

为什么不直接使用 Peewee ORM + SQL 来为您完成这项工作?

query = (Fruit
         .select(Fruit.title, fn.COUNT(Fruit.id))
         .group_by(Fruit.title)
         .having(fn.COUNT(Fruid.id) > 1))

然后您将得到一个仅包含水果的列表,其中有多个具有相同标题的水果。

关于python - 查找数组中具有重复键值的 dict 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35025751/

相关文章:

马尔可夫链平稳分布的Python代码解释

python - 如何使用不连续索引在python中形成一个新列表?

python - 为什么 lxml 找不到这个类?

python - 如何用numpy数组中的相应值替换每一行中特定索引中的值

python - 添加由不同但重叠的间隔索引的两个系列

python - 第二个管道运算符不适用于我在 python 中的正则表达式

python - 将 float 输入列表而不覆盖列表

python - 在 Python 中使用列表理解在嵌套 for 循环中枚举

python - sleep 不适用于 pyqt4

Python 并行处理库