我有一个包含 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/