我有一份清单清单:
L = [['Bob'],['5', '0', '0', '0', '0'],['Jack'],['3', '0', '0', '1', '-3'],['Larry'],['1', '-3', '1', '-5', '0'], ...]
我想将此列表列表转换为字典,其名称为键,数字为值,以便返回:
{'Bob':[5, 0, 0, 0, 0], 'Jack':[3, 0, 0, 1, -3], 'Larry':[1, -3, 1, -5, 0], ...}
所以我想要一个字符串作为键和一个整数数组作为每个字符串的值,但是,我不知道如何去做这个。
让我烦恼的主要问题是如何使字典将列表的每个其他条目作为值,同时将字符串转换为整数。
答案 0 :(得分:1)
您可以使用词典理解:
L = [['Bob'],['5', '0', '0', '0', '0'],['Jack'],['3', '0', '0', '1', '-3'],['Larry'],['1', '-3', '1', '-5', '0']]
new_l = {L[i][0]:list(map(int, L[i+1])) for i in range(0, len(L), 2)}
输出:
{'Bob': [5, 0, 0, 0, 0], 'Larry': [1, -3, 1, -5, 0], 'Jack': [3, 0, 0, 1, -3]}
答案 1 :(得分:1)
这是另一种选择
L = [['Bob'],['5', '0', '0', '0', '0'],['Jack'],['3', '0', '0', '1', '-3'],['Larry'],['1', '-3', '1', '-5', '0']]
{k[0]: list(map(int, v)) for k, v in zip(L[::2], L[1::2])}
输出:
{'Bob': [5, 0, 0, 0, 0], 'Larry': [1, -3, 1, -5, 0], 'Jack': [3, 0, 0, 1, -3]}
答案 2 :(得分:0)
您可以使用词典理解:
L = [['Bob'],['5', '0', '0', '0', '0'],['Jack'],['3', '0', '0', '1', '-3'],['Larry'],['1', '-3', '1', '-5', '0']]
new_l = {
L[i][0]: L[i+1] for i in range(0,len(L)-1, 2)
}
输出:
{'Bob': [5, 0, 0, 0, 0], 'Larry': [1, -3, 1, -5, 0], 'Jack': [3, 0, 0, 1, -3]}
答案 3 :(得分:0)
更新:
dict_from_list = {key[0]: value for key, [int(elem) for elem in value] in zip(L[::2], L[1::2])}
我没注意到值列表的各个元素都是str。要将它们转换为int类型,what bphi has done是所有IMO中发布的最好,最干净和pythonic的解决方案。我建议详细研究它,并将其纳入你的python编程中。当然
如果你不想使用map
那么在dict理解中使用列表理解是要走的路,如上面的代码所示。
原文答案:
dict_from_list = {key[0]: value for key, value in zip(L[::2], L[1::2])}