如何迭代列表并将多个值附加到字典中?

How do I iterate a list and append multiple values into a dictionary?

我有一个项目文件,每行都有一个 ID、类别、名称和价格,用逗号分隔。我试图重新排列每一行,以便 ID、名称和价格计为一个值,并将其附加到由类别确定的四个键之一。类别是 c1、c2、c3 和 c4。

以下代码似乎有效,但最终会覆盖该值。打印字典时,只有一个值附加到一个键。我正在努力使一个键可以有多个值。问题区域在 if, elif 块中。

我希望看到类似 {'c1': ('a b c') ('x y z'), 'c2': ('a b c') ('x y z')...

相反,我只看到 {'c1': 'x y z', 'c2': 'x y z'} 或者基本上是我的四个类别中的任何一个显示的最后一个值文件(这就是为什么我假设我正在覆盖而不是附加值)。

我认为我需要使用 .append,但我已经尝试过的只会导致语法错误。

您希望字典中的每个类别都包含一个列表 List-python docs

您想要声明一个新的空列表,而不是将字典中的每个元素初始化为 None:[]

设置好后,您可以使用 emptyDict['cx'].append(definition)

将每个项目附加到此

像这样:

    emptyDict = {'c1': [], 'c2': [], 'c3': [], 'c4': []}

    for i in file:
        fields = i.split(',')
        idNum = fields[0]
        category = fields[1]  # categories are c1, c2, c3, and c4 only
        name = fields[2]
        price = fields[3]
        defintion = idNum + name + price

        if category == 'c1':
            emptyDict['c1'].append(defintion)
        elif category == 'c2':
            emptyDict['c2'].append(defintion)
        elif category == 'c3':
            emptyDict['c3'].append(defintion)
        else:
            emptyDict['c4'].append(definition)