Python 字典理解困难
我正在尝试一个字典理解,它获取一个字符串列表,并从这些元素创建一个字典。下面的代码包含预期的和实际的输出以及我正在使用的理解。任何帮助都将不胜感激Python 字典理解困难,python,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 ra
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]}
'''
在本例中,我不会使用dict理解,您正在创建一个元素列表
[int(strlist[x][y])]
。在python3中:
strings=['Kennedy D MA-1-11','Snowe R ME 1']
结果={}
对于字符串中的行:
名称,_uuuu,_uuuu,*rest=line.split()
结果[名称]=列表(剩余)
在本例中,我不会使用dict理解,您正在创建一个元素列表[int(strlist[x][y])]
。在python3中:
strings=['Kennedy D MA-1-11','Snowe R ME 1']
结果={}
对于字符串中的行:
名称,_uuuu,_uuuu,*rest=line.split()
结果[名称]=列表(剩余)
最简单的:
{s[0]:s[3:] for s in strlist}
不要弄乱索引…!-) 最简单的:
{s[0]:s[3:] for s in strlist}
不要弄乱索引…!-) 试过这个
dict((x.split()[0],x.split()[3:])表示s中的x)
您可以对其进行进一步修改,以:
{x[0]:x[3:]代表x in[y.split()代表y in s]}
如果你不介意可读性问题,你可以
{x[0]:[int(i)for i in x[3:]for x in[y.split()for y in s]}
要将数字转换为int
s请尝试以下操作
dict((x.split()[0],x.split()[3:])表示s中的x)
您可以对其进行进一步修改,以:
{x[0]:x[3:]代表x in[y.split()代表y in s]}
如果你不介意可读性问题,你可以
{x[0]:[int(i)for i in x[3:]for x in[y.split()for y in s]}
将数字转换为
int
sWow!它能起作用,但我不太清楚如何起作用。你能解释一下s[3:]的语法吗?这是否只是从3迭代到结束?我还需要1和-1作为整数值int(s[3:])不起作用。当我把这些值添加到列表中时,有没有办法说把它们转换成整数?@Duckenmonkey44当然,用s[3://code>中的x的[int(x)来代替s[3://code>!非常感谢Alex!+3到目前为止哈哈!这是有效的,但我不太确定如何。你能解释s[3:]语法?这只是从3迭代到结束吗?我还需要1和-1作为整数值int(s[3:])不起作用。有没有办法说在我将它们添加到列表时将这些值转换为整数?@Duckenmonkey44当然,使用[int(x)for x in s[3:][/code>代替s[3:][/code>!非常感谢Alex!+3到目前为止哈哈