如何在python中使用循环为字典分配键和值?

2024-04-20 12:21:03 发布

您现在位置: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'}

Tags: 代码findprintwhilename1name2dictoame2
3条回答

您可以使用字典理解和序列解包:

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

可以将dict构造函数与以下生成器表达式一起使用str.split()

dict(s.split(maxsplit=1) for s in a)

这将返回:

{'name1': '2 3 4', 'name2': '5 6 7'}

如果我们在a的每个子列表上使用.split(),我们将得到

a = [['name1', '2', '3', '4'], ['name2', '5', '6', '7']]

现在我们可以决定使用.split()name索引作为我们的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}

相关问题 更多 >