首页 > 解决方案 > 追加到字典,Python

问题描述

我有一个清单,

print(List)
['x1, y1, z1', '1, 2, 3', '2, 4, 6', '4, 8, 12']

和一个包含三个空列表的字典,

print(Dictionary)
{0: [], 1: [], 2: []}

我用 for 循环创建了,

for item in List:
    r = item.split(', ')

以便,

for item in List:
    r = item.split(', ')

    print(r)
    ['x1', 'y1', 'z1']
    ['1', '2', '3']
    ['2', '4', '6']
    ['4', '8', '12']

    print(r[0])
    x1
    1
    2
    4

    ...etc.

现在我想将 r[i] 的每个项目附加到 Dictionary[i] 以便

print(Dictionary)
{0: ['x1', '1', '2', '4'], 1: ['y1', '2', '4', '8'], 2: ['z1', '3', '6', '12']}

谢谢!

标签: pythonpython-3.xdictionary

解决方案


你可以用 list 和 dict 理解来做这个更清洁:

my_list = ['x1, y1, z1', '1, 2, 3', '2, 4, 6', '4, 8, 12']
cleaned_list = [x.split(', ') for x in my_list]

my_dict = {index: list(lst) for index, lst in enumerate(zip(*cleaned_list))}

print(my_dict)

输出:

{0: ['x1', '1', '2', '4'], 1: ['y1', '2', '4', '8'], 2: ['z1', '3', '6', '12']}

- 编辑(来自 jpp 的评论) -

dict如果您将其留给构造函数,则可以将理解写得更短(并且可能更具可读性),但是值将是元组而不是列表。由你决定:

my_dict = dict(enumerate(zip(*cleaned_list)))

输出:

{0: ('x1', '1', '2', '4'), 1: ('y1', '2', '4', '8'), 2: ('z1', '3', '6', '12')}

推荐阅读