使用python遍历单个列表中的多个字典以查找相似的键值对

时间:2018-10-10 20:05:02

标签: python-3.x mongodb list loops dictionary

我是Python的新手,想比较列表中存在的多个字典并查找相似的键值对。该列表是通过从mongodb中读取一个集合来创建的。下面是我尝试过的代码,但是它将第一本词典与其他词典进行了比较。我希望所有这些都可以相互比较。有人可以帮忙吗?

import json
import pandas as pd
from pymongo import MongoClient

try: 
    client = MongoClient() 
    print("Connected successfully!!!") 
except:   
    print("Could not connect to MongoDB") 

# database 
db = client.conn
collection = db.contactReg
df = collection.find()
x = []
for row in df:
    x.append(row)
print(x)

common = {}
for k in x[0]:
    for i in range(1,len(x)):
        if x[0][k] != x[i][k]: continue
        common[k] = x[i][k]
print(common)

列表“ x”包含以下内容:

[{'_id': ObjectId('5bbc86e5c16a27f1e1bd39f8'), 'name': 'swetha', 'nameId': 
123.0, 'source': 'Blore', 'sourceId': 10, 'LastUpdate': '10-Oct-2018'}, 
{'_id': ObjectId('5bbc86e5c16a27f1e1bd39f9'), 'name': 'swetha', 'nameId': 
123.0, 'source': 'Mlore', 'sourceId': '11', 'LastUpdate': '11-Oct-2018'}, 
{'_id': ObjectId('5bbc86e5c16a27f1e1bd39fa'), 'name': 'swathi', 'nameId': 
124.0, 'source': 'Mlore', 'sourceId': '11', 'LastUpdate': '9-Oct-2018'}]

输出如下:

[{'_id': ObjectId('5bbc86e5c16a27f1e1bd39f8'), 'name': 'swetha', 'nameId': 
123.0, 'source': 'Blore', 'sourceId': 10.0, 'LastUpdate': '10-Oct-2018'}, 
{'_id': ObjectId('5bbc86e5c16a27f1e1bd39f9'), 'name': 'swetha', 'nameId': 
123.0, 'source': 'Mlore', 'sourceId': '11', 'LastUpdate': '11-Oct-2018'}, 
{'_id': ObjectId('5bbc86e5c16a27f1e1bd39fa'), 'name': 'swathi', 'nameId': 
124.0, 'source': 'Mlore', 'sourceId': '11', 'LastUpdate': '9-Oct-2018'}]

common: {'name': 'swetha', 'nameId': 123.0}

0 个答案:

没有答案