我有一个项目文件,每行的ID,类别,名称和价格用逗号分隔。我正在尝试重新排列每一行,以使ID,名称和价格计数作为一个值,并将其附加到由类别确定的四个键之一。类别为c1,c2,c3和c4。
以下代码似乎有效,但是最终覆盖了该值。当打印出字典时,只有一个值附加到一个键上。我正在尝试使一个键可能具有多个值。问题区域在if,elif块中。
我希望看到类似{'c1':('ab c')('xy z'),'c2':('ab c')('xy z')....
相反,我只看到{'c1':'xy z','c2':'xy z'}或基本上是文件中四个类别中任何一个出现的最后一个值(这就是为什么我假设我覆盖而不是附加值)。
我相信我需要使用.append,但是我尝试过的操作只会导致语法错误。
答案 0 :(得分:1)
您想要的是为词典中的每个类别包含一个列表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)