我的代码:
a = ['name1 2 3 4', 'name2 5 6 7']
dicto = {}
i = 0
while (i < 2):
dicto[a[i][:(a[i].find(''))]] = a[i][a[i].find('') + 1:]
i += 1
print(dicto)
期望输出:
{'name1':'2 3 4','name2':'5,6,7'}
我的输出:
{'': 'ame2 5 6 7'}
您可以将字典构造函数与以下生成器表达式一起使用str.split()
:
dict(s.split(maxsplit=1) for s in a)
这将返回:
{'name1': '2 3 4', 'name2': '5 6 7'}
如果我们在每个子列表上使用.split()
a
,我们将得到
a = [['name1', '2', '3', '4'], ['name2', '5', '6', '7']]
现在我们可以决定使用name
.split()
的0
索引作为我们的key
,将剩余的切片[1:]
作为我们的值。 为此,我们可以使用传统的循环
dicta = {}
for i in a:
dicta[i.split()[0]] = i.split()[1:]
# {'name1': ['2', '3', '4'], 'name2': ['5', '6', '7']}
这可以使用字典理解来缩短
dicta = {i.split()[0]: i.split()[1:] for i in a}
您可以使用字典理解和序列解包:
a = ['name1 2 3 4', 'name2 5 6 7']
res = {k: ' '.join(v) for k, *v in map(str.split, a)}
print(res)
{'name1': '2 3 4', 'name2': '5 6 7'}