python - 将元组作为值附加到字典中的现有键

标签 python list python-2.7 dictionary tuples

我有一个列表列表,每个列表中有 3 个项目(为了示例):产品类型、产品颜色、产品数量。

我想做的是创建一个字典,其中每种产品类型都是键,颜色和数量是值。也就是说,我正在寻找的是这样的结构:

键1:(元组1),(元组2),...

键1:[(元组1),(元组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:
    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'对象不可迭代”错误。

当我尝试将 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。第一个类型及其数量是值列表的单独元素。

我应该提到,在我的代码的下一步中,我计划用这些数量进行一些哮喘治疗。

希望我能够很好地解释我的问题,并希望您能提供帮助! 谢谢:)

最佳答案

将第一个示例中的行更改为:

inventory_dict[item[0]] = [(item[1],item[2])]

如果您希望以后能够追加内容,则需要在第一次创建值时将其设置为列表。

您还可以使用 collections.defaultdict ,这会让你这样做:

inventory_dict = collections.defaultdict(list)

然后你可以省去 if-then 并像这样执行循环:

for item in my_list:
    inventory_dict[item[0]].append((item[1], item[2]))

关于python - 将元组作为值附加到字典中的现有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23598438/

相关文章:

java - 如何在 SQL Java 中将列表值作为参数传递

python - 如何使用 for 循环构建字符串长度字典?

python-2.7 - django 核心异常配置不当 :

python - os.environ ['PATH' ] 与 echo $PATH 显示的系统路径不同

python - python 列表指向行为

python - 问题在for循环中删除列表项(python)

python -/usr/local/bin/python3 : bad interpreter: No such file or directory for ubuntu 14. 04

python - 在 Python 中验证数字签名的 PDF

python - Keras 模型预测同一类别

python - 在python3中调用Numpy、Scipy、Gensim时出错