【发布时间】:2017-05-12 13:39:24
【问题描述】:
设置
我正在使用 Scrapy 进行抓取项目。
我有一个字符串列表,
l = ['john', 'jim', 'jacob', … ,'jonas']
还有一个包含列表的字典,
d = {
'names1': ['abel', 'jacob', 'poppy'],
'names2': ['john', 'tom', 'donald']
}
问题
我想检查l 中的每个名称是否包含在d 的列表之一中。如果是这样,我希望将d 中该列表的键分配给一个新变量。例如。 jacob 会得到 newvar = names1。
现在我有,
found = False
for key,value in d.items():
for name in l:
if name == value:
newvar = key
found = True
break
else:
newvar = 'unknown'
if found:
break
但是,这会导致l 中的每个name 都为newvar = 'unknown'。
我认为我没有正确地跳出外部 for 循环。除此之外,是否有更优雅的方法来解决我的问题?
【问题讨论】:
-
您确定要这样做吗?我的意思是你每次都想创建的新变量。
-
是的,它是 Scrapy 蜘蛛的一部分:我稍后将
newvar分配给字典。 -
是把
if name == value改成if name in value的问题吗?还是我读错了?因为在我看来value会有一个列表,而不是一个名字。 -
为什么不立即将其分配给字典?
-
@Marcy 不,我试过了。不变。
标签: python dictionary for-loop