如果值与列表中的值匹配,我正在尝试从嵌套字典中提取值。
data = [
{
"id": 12345678,
"list_id": 12345,
"creator_id": 1234567,
"entity_id": 1234567,
"created_at": "2020-01-30T00:43:55.256-08:00",
"entity": {
"id": 123456,
"type": 0,
"first_name": "John",
"last_name": "Doe",
"primary_email": "[email protected]",
"emails": [
"[email protected]"
]
}
},
{
"id": 12345678,
"list_id": 12345,
"creator_id": 1234567,
"entity_id": 1234567,
"created_at": "2020-01-30T00:41:54.375-08:00",
"entity": {
"id": 123456,
"type": 0,
"first_name": "Jane",
"last_name": "Doe",
"primary_email": "[email protected]",
"emails": [
"[email protected]"
]
}
}
]
代码如下。
match_list = ['[email protected]',[]]
first_names = []
email = []
for i in match_list:
for record in data:
if 'primary_email' == i:
email.append(record.get('entity',{}).get('primary_email', None))
first_names.append(record.get('entity',{}).get('first_name', None))
print(first_names)
print(email)
不是返回匹配值,而是仅返回空列表。这里的任何帮助将不胜感激。
在代码的第六行
if 'primary_email' == i:
您正在将match_list中的元素(即“ i”)与名为“ primary_email”的字符串而不是实际电子邮件进行比较。因为“ [email protected]”不等于“ primary_email”(字面上是字符串)。
代替使用
if record['entity']['primary_email'] == i:
并且您的代码应该可以正常工作。