查询交叉参考字典
问题描述:
我坚持一些列表/字典的工作。下面是字典的第一列表的一部分,我有查询交叉参考字典
{'createdTime': '2017-11-18T11:11:42.223Z',
'fields': {'Pair ID': 307,
'Source': ['recmSPeRUDk7JxTEs'],
'Target': ['recEijqlS0kjmIjpL']},
'id': 'rec02AuJ8QzEZR56b'}
在Source
和Target
它引用从另一个字典,看起来像这样的条目(通过这里的一切不相关剥离)
{'createdTime': '2017-11-05T17:14:59.000Z',
'fields': {'Name': 'John',
'E-Mail': '[email protected] ',
'id': 'rec0KMaG8L7qldPuI'}
的链接通过id字段。所以上面字典中的源和目标引用了第二个条目。我知道需要发送电子邮件到上面的字典中的每个源代码,同时遍历列表。
两者都是词典的列表。我的问题是我是否需要遍历第二个列表,或者是否有方法以更智能的方式引用与上面的Source匹配的记录?
答
由于您的数据格式化的答案是肯定的,你必须迭代,因为当你知道密钥并且你想要相应的值时,就要使用字典。在这里,您想要检索知道相反情况的值的密钥。
现在,如果这是你想要的,我会建议修改你的数据的结构,以便id
不是一个字段,但直接是你的字典的关键。例如:
events_recorded = {
'rec02AuJ8QzEZR56b' :
{'createdTime': '2017-11-18T11:11:42.223Z',
'fields': {
'Pair ID': 307,
'Source': ['recmSPeRUDk7JxTEs'],
'Target': ['recEijqlS0kjmIjpL']},
},
'recRkckX9nfl5VhWk' :
{'createdTime': '2017-11-18T12:05:42.223Z',
'fields': {
'Pair ID': 45,
'Source': ['reclfUAfAmCRlmuKw'],
'Target': ['recMIG7mm7eNZ79IC']},
},
'receeyCtLXIA2r1dw' :
{'createdTime': '2017-11-18T12:05:42.223Z',
'fields': {
'Pair ID': 45,
'Source': ['recnQPVxk5Lvv73xz'],
'Target': ['recMV3zbkgevDEgr0y']},
},
}
addressbook = {
'rec0KMaG8L7qldPuI' :
{'createdTime': '2017-11-05T17:14:59.000Z',
'fields': {'Name': 'John',
'E-Mail': '[email protected] '}
},
'reclfUAfAmCRlmuKw' :
{'createdTime': '2017-10-05T03:43:02.000Z',
'fields': {'Name': 'Ehtel',
'E-Mail': '[email protected] '}
},
'recMV3zbkgevDEgr0y' :
{'createdTime': '2017-10-05T03:43:02.000Z',
'fields': {'Name': 'Gertrude',
'E-Mail': '[email protected] '}
},
}
然后,您可以做这样的事情:
reference_wanted = events_recorded['rec02AuJ8QzEZR56b']['fields']['Source'][0]
email_wanted = addressbook[reference_wanted]['fields']['E-Mail']
但是这取决于你的数据是如何结构化