我的字典在列表中为:-
L= [{'id': 3, 'term': 'bugatti', 'bucket_id': 'ad_3'},
{'id': 4, 'term': 'mercedez', 'bucket_id': 'ad_4'},
{'id': 8, 'term': 'entertainment', 'bucket_id': 'ad_8'},
{'id': 8, 'term': 'entertainment', 'bucket_id': 'ad_8'},
{'id': 9, 'term': 'music', 'bucket_id': 'ad_9'}]
,另一个列表为:-
words=['bugatti', 'entertainment', 'music','politics']
所有我想用键words
映射列表term
的元素,并想要获得相应的字典。预期输出为:
new_list= [{'id': 3, 'term': 'bugatti', 'bucket_id': 'ad_3'},
{'id': 8, 'term': 'entertainment', 'bucket_id': 'ad_8'},
{'id': 8, 'term': 'entertainment', 'bucket_id': 'ad_8'},
{'id': 9, 'term': 'music', 'bucket_id': 'ad_9'}]
我尝试过的方式:
for d in L:
for k,v in d.items():
for w in words:
if v==w:
print (k,v)
只给我
term bugatti
term entertainment
term entertainemnt
term music
答案 0 :(得分:2)
使用列表理解。
例如:
L= [{'id': 3, 'term': 'bugatti', 'bucket_id': 'ad_3'},
{'id': 4, 'term': 'mercedez', 'bucket_id': 'ad_4'},
{'id': 8, 'term': 'entertainment', 'bucket_id': 'ad_8'},
{'id': 8, 'term': 'entertainment', 'bucket_id': 'ad_8'},
{'id': 9, 'term': 'music', 'bucket_id': 'ad_9'}]
words=['bugatti', 'entertainment', 'music','politics']
print([i for i in L if i["term"] in words])
输出:
[{'bucket_id': 'ad_3', 'id': 3, 'term': 'bugatti'},
{'bucket_id': 'ad_8', 'id': 8, 'term': 'entertainment'},
{'bucket_id': 'ad_8', 'id': 8, 'term': 'entertainment'},
{'bucket_id': 'ad_9', 'id': 9, 'term': 'music'}]
答案 1 :(得分:0)
您可以使用列表理解功能,但是我包含了完整的循环,因此您可以更清楚地看到逻辑
new_l = [i for i in l if i['term'] in words]
完整循环
new_l = []
for i in l:
if i['term'] in words:
new_l.append(i)
答案 2 :(得分:0)
LocalDate
答案 3 :(得分:-1)
问题是您正在打印(k,v)
,它只是一个字典条目的键和值。如果要拥有整个词典,则必须将整个词典放入打印语句中。
for d in L:
for k,v in d.items():
for w in words:
if v==w:
print (d)