比较相似的词典条目

我正在通过用户名/电子邮件查询两个不同的系统,并比较结果,但我不是非常熟悉Python,也不知道比较词典条目的最佳方式。
这三件奇怪的事情是:
1)结果在一个词典中返回(从两个系统),它的值是一个用户属性列表,我想比较词典中列表中的用户名或电子邮件字段(最好是电子邮件,因为它要求是唯一的)
2)格式在一次返回中是"干净的"--即
邮箱:Email@Domain.com
但在另一个列表中,即['email2@domain2.com'](与用户名相同)-不确定这是否重要,它似乎还没有
3)可能有多个电子邮件地址。只需要一个是唯一的,并且其中一个词典可以有多个电子邮件(尽管它包含在一个源中-比方说源1的词典可以有多个,源2的词典没有)
我试过很多方法,我现在看到的是这样的:

选择 | 换行 | 行号
  1. for key, value in data: #source2
  2.   for k, v in result: # source1 (possibly multiple emails)
  3.     for entry in value:
  4.       #this now looks wrong to me, I might not need the for above, but it still doesn't work without...
  5.       if entry.get("mail",[]) in v.get("mail",[]):
  6.         print "Match"
  7.         print value
  8.         print v
  9.         # eventually will join additional fields
  10.         # eventually will write to file
  11.       else:
  12.         #doesn't match, skip for now
  13.         pass
  14.  
# 回答1


你能发布两个数据的一个小的可代表的样本吗?如果
数据
(SOURCE 2)是一个词典,则需要像这样迭代:

选择 | 换行 | 行号
  1. for key, value in data.items():

选择 | 换行 | 行号
  1. for key in data:
  2.     value = data[key]
# 回答2


是的,我对它做了一些修改,但不想继续在运行中编辑我的帖子。我可以通过以下方式访问元素:

选择 | 换行 | 行号
  1. for key, value in data: #data=list, value=dict(most of the time)
  2.     if isinstance(value,dict):
  3.         for k, v in result: # result=list, v=dict(most fo the time)
  4.             if isinstance(v,dict):
  5.                 if value.get("mail",[]) in v.get("mail",[]):
  6.                     print "Match"
  7.                     print value
  8.                     print v
  9.  

它将返回到value.get和v.get,但if in:不匹配,它是一个字符串列表,但我不知道如何比较,也不知道如何比较。
数据中的样本数据:
Key(字符串)=User,Group(除了迭代,我忽略它)
值(字典)={'mail':['mail@domain.com'],'type':['code'],'name':['用户名']}
来自RESULT的样本数据:
K(字符串)=用户、组(同样,我通常忽略)
V(Dict)={'mail':['mail@domain.com','email2@domain.com'],'group':['group'],'type':['code'],'name':['用户名']}
当我迭代Value或v时,我得到它们是列表,但我似乎不能用我正在编码的东西来提取单个值。不确定这是否相关:)
编辑:我正在将两个组关联在一起,并尝试查找组之间匹配的人员,以及仅来自源1或源2的人员。有多封电子邮件的来源是我唯一能保证是唯一的,这就是为什么我选择这一点进行分类。我当然对其他类型的游戏持开放态度,但我不确定设定的差异是否能满足我想要的一切

# 回答3


我得到了它,它是一个列表,所以我将它赋给一个变量,并将其转换为字符串,比较就起作用了
谢谢你的帮助,bvdet!
# 回答4


很高兴你能解决这个问题。感谢您的反馈。

标签: python

添加新评论