字典理解的麻烦

时间:2015-03-02 00:57:45

标签: python

我试图通过字典理解来获取字符串列表并从这些元素创建字典。下面的代码包含预期和实际输出以及我正在使用的理解。任何帮助将不胜感激。

s = ['Kennedy D MA -1 -1 1 1', 'Snowe R ME 1 1 1 1']

strlist = list(x.split() for x in s)

print({ strlist[x][0]:[int(strlist[x][y])] for x in range(len(strlist))  for y in range(3, len(strlist[0])) })


'''
   EXPECTED: {'Snowe': [1, 1, 1, 1], 'Kennedy': [-1, -1, 1, 1]} 

   ACTUAL: {'Snowe':[1] , 'Kennedy':[1]}
'''

3 个答案:

答案 0 :(得分:3)

最简单的:

{s[0]:s[3:] for s in strlist}

没有搞乱指数......! - )

答案 1 :(得分:1)

试过这个

dict((x.split()[0],x.split()[3:]) for x in s)

您可以进一步修改为:

{x[0]:x[3:] for x in [y.split() for y in s]}

如果您不介意有可读性问题,可以

{x[0]:[int(i) for i in x[3:]] for x in [y.split() for y in s]}

将数字转换为int s

答案 2 :(得分:0)

在这种情况下,我不会使用字典理解,您需要创建一个元素[int(strlist[x][y])]的列表。在python3中:

strings = ['Kennedy D MA -1 -1 1 1', 'Snowe R ME 1 1 1 1']

result = {}
for line in strings:
    name, __, __, *rest = line.split()
    result[name] = list(rest)
相关问题