我坚持使用一些列表/字典工作。这是我第一个词典列表的一部分
{'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': 'john@example.com ',
'id': 'rec0KMaG8L7qldPuI'}
链接是通过id字段。因此,上面的字典中的Source和Target引用了第二个中的条目。我知道需要在迭代列表的同时从上面的字典中向每个Source发送电子邮件。
两者都是词典列表。我的问题是我是否需要遍历第二个列表,或者有没有办法以更智能的方式引用与上面的Source匹配的记录?
答案 0 :(得分:0)
由于您的数据格式化方式,答案是肯定的,您必须进行迭代,因为当您知道密钥并希望拥有相应的值时,将使用字典。在这里,您希望检索知道反向情况的值的密钥。
现在,如果这是您想要的,我建议您修改数据结构,以便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': 'john@example.com '}
},
'reclfUAfAmCRlmuKw' :
{'createdTime': '2017-10-05T03:43:02.000Z',
'fields': {'Name': 'Ehtel',
'E-Mail': 'ethel@example.com '}
},
'recMV3zbkgevDEgr0y' :
{'createdTime': '2017-10-05T03:43:02.000Z',
'fields': {'Name': 'Gertrude',
'E-Mail': 'gertrude@example.com '}
},
}
然后你可以做以下事情:
reference_wanted = events_recorded['rec02AuJ8QzEZR56b']['fields']['Source'][0]
email_wanted = addressbook[reference_wanted]['fields']['E-Mail']
但这取决于您的数据结构