使用split()操作和列表推导创建字典

时间:2016-03-28 08:56:22

标签: python list-comprehension

我想使用`list comprehension'创建'词典':

a_list = ['1, Lastoŭski', '2, Kupala', '3, Kolas'] 

到目前为止我尝试的是:

d = {key: value for (key, value) in s.split(',') for s in a}

>>> NameError: name 's' is not defined

但这是完全错误的。你可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

不需要词典理解。你正在制造比它需要的更复杂的东西;)。

a_list = ['1, Lastoŭski', '2, Kupala', '3, Kolas']
d = {}
for i in a_list:
    temp = i.split(', ')
    d[temp[0]] = temp[1]

print d
# returns: {'3': 'Kolas', '2': 'Kupala', '1': 'Lastoŭski'}

如果您需要列表理解,那么这就足够了:

d = dict((key, value) for key, value in [i.split(', ') for i in a_list])

你很亲密,但你缺少括号

答案 1 :(得分:1)

正如@Delgan所指出的那样,它可以通过

直接完成
d1 = dict(keyval.split(", ") for keyval in a_list)

没有内部嵌套:)

旧方法并不是真的正确: -

d = [a.split(',') for a in a_list]
d1 = {key: val for key,val in d}

d1 = {key: val for key,val in (a.split(',') for a in a_list)}

答案 2 :(得分:0)

试试这个:

 d = dict(map(str, x.split(',')) for x in a_list)

这会有所帮助。