【发布时间】:2014-06-29 04:34:02
【问题描述】:
我有一个列表列表,每个列表中有 3 个项目(为了示例):产品类型、产品颜色、产品数量。
我要做的是创建一个字典,其中每个产品类型都是一个键,颜色和数量是值。也就是说,我要找的是这个结构:
key1:(tuple1),(tuple2),...
或
key1:[(tuple1),(tuple2),...]
问题是,如您所知,您不能真正将元组作为值附加到字典中的键。
这是一个简单的例子:
my_list = [["ball","red",2],["ball","blue",5],["ball","green",7],["shirt","large",5],["shirt","medium",9],["shirt","small",11]]
inventory_dict = {}
for item in my_list:
if item[0] not in inventory_dict:
inventory_dict[item[0]] = (item[1],item[2])
else:
inventory_dict[item[0]].append((item[1],item[2]))
当我尝试做类似的事情时:
my_list = [["ball","red",2],["ball","blue",5],["ball","green",7],["shirt","large",5],["shirt","medium",9],["shirt","small",11]]
inventory_dict = {}
for item in my_list:
my_tuple = (item[1],) + tuple(item[2])
if item[0] not in inventory_dict:
inventory_dict[item[0]] = my_tuple
else:
inventory_dict[item[0]].append(my_tuple)
受this answer 启发,我收到“TypeError: 'int' object is not iterable”错误。
当我尝试将 my_tuple 替换为:
my_tuple = list((item[1],item[2]))
受this answer 启发,我得到了一个我无法使用的结果,格式如下:
{'ball': ['red', 2, ['blue', 5], ['green', 7]],
'shirt': ['large', 5, ['medium', 9], ['small', 11]]}
我不能使用它的原因是,例如每个值的 len 是 4,而它应该是 3。第一种类型及其数量是值列表的单独元素。
我应该提到,在我的代码的下一步中,我计划对数量进行一些哮喘治疗。
希望我能够很好地解释我的问题,并希望您能提供帮助! 谢谢:)
【问题讨论】:
标签: python list python-2.7 dictionary tuples