如果值与列表中的值匹配,我将尝试从嵌套字典中提取值
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": "john@fakemail.com",
"emails": [
"john@fakemail.com"
]
}
},
{
"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": "jane@fakemail.com",
"emails": [
"jane@fakemail.com"
]
}
}
]
代码如下
match_list = ['jane@fakemail.com',[]]
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)
它不返回匹配值,只返回空列表。这里的任何帮助都将不胜感激
预期产量为
first_names = ['Jane'] and email = ['jane@fakemail.com']
在您的代码中,当您比较
'primary_email'==i
时,总是会得到一个空列表,它总是False
将其更改为
record['entity']['primary_email']==i
这里不需要使用}时添加
get
。因为如果mail
与任何primary_email
不匹配,那么什么也不会发生primary_email
将仅在满足条件{试试这个,我重构了你的代码
输出
将临时值存储在变量中,以使代码更易于处理:
输出:
在代码的第6行
您正在将match_list(即“i”)中的元素与名为“primary_email”的字符串(而不是实际的email)进行比较。自从jane@fakemail.com'不等于'primary_email'(字面上是字符串)
改用
您的代码应该按预期工作
相关问题 更多 >
编程相关推荐