在 python 列表理解中分配中间变量
Assigning intermediate variable in python list comprehension
我有一个字符串列表(字符串和列表都可以很大)。我只想从列表中的某些元素构建字典。
l = ['aaa 0','bbb 1','ccc 2','ddd 3','abc 1']
wanted = set(['aaa','abc'])
dict([x.split() for x in l if x.split()[0] in wanted])
{'aaa': '0', 'abc': '1'}
这可以不调用两次 split()
操作来完成吗?
我不知道是否更有效,但以下语句使用 split
一次:
{k: n for k, n in dict([x.split() for x in l]).iteritems() if k in wanted}
使用嵌套生成器表达式 ((x.split() for x in l)
) 生成键值对:
>>> l = ['aaa 0', 'bbb 1', 'ccc 2', 'ddd 3', 'abc 1']
>>> wanted = {'aaa', 'abc'}
>>> {key: value for key, value in (x.split() for x in l) if key in wanted}
{'abc': '1', 'aaa': '0'}
您可以将 split() 操作减少到一个。
l = ['aaa 0','bdb 1','ccc 2','ddd 3','abc 1']
dict = { }
s = set(['aaa','abc'])
for elem in l:
nl = elem.split()
if nl[0] in s:
dict[nl[0]] = nl[1]
for elm in dict:
print elm,dict[elm]
我有一个字符串列表(字符串和列表都可以很大)。我只想从列表中的某些元素构建字典。
l = ['aaa 0','bbb 1','ccc 2','ddd 3','abc 1']
wanted = set(['aaa','abc'])
dict([x.split() for x in l if x.split()[0] in wanted])
{'aaa': '0', 'abc': '1'}
这可以不调用两次 split()
操作来完成吗?
我不知道是否更有效,但以下语句使用 split
一次:
{k: n for k, n in dict([x.split() for x in l]).iteritems() if k in wanted}
使用嵌套生成器表达式 ((x.split() for x in l)
) 生成键值对:
>>> l = ['aaa 0', 'bbb 1', 'ccc 2', 'ddd 3', 'abc 1']
>>> wanted = {'aaa', 'abc'}
>>> {key: value for key, value in (x.split() for x in l) if key in wanted}
{'abc': '1', 'aaa': '0'}
您可以将 split() 操作减少到一个。
l = ['aaa 0','bdb 1','ccc 2','ddd 3','abc 1']
dict = { }
s = set(['aaa','abc'])
for elem in l:
nl = elem.split()
if nl[0] in s:
dict[nl[0]] = nl[1]
for elm in dict:
print elm,dict[elm]