如何在 Python 中使用循环将键和值分配给字典?



我的代码:

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'}

最新更新