【发布时间】:2016-10-16 05:19:28
【问题描述】:
您好,我希望将此元组列表转换为字典。由于我是 python 新手,我正在想办法转换成字典。如果只有一个值,我只能转换为字典。就我而言,其中有两个值。我将在下面进行更多详细说明:
`List of tuples: [('Samsung', 'Handphone',10), ('Samsung', 'Handphone',-1),
('Samsung','Tablet',10),('Sony','Handphone',100)]`
正如您在上面看到的,我希望将“Samsung”标识为键,将“Handphone”和“10”标识为与该键相关的值。
我想要的输出是:
`Output: {'Sony': ['Handphone',100], 'Samsung': ['Tablet',10,'Handphone', 9]}`
正如您在上面看到的,项目“手机”和“平板电脑”是根据关键值分组的,在我的例子中是索尼和三星。如果它们属于相同的项目和相同的键(Samsung 或 Sony),则项目的数量会被添加/减去。
我非常感谢你们为实现上述输出而提出的任何建议和想法。我真的没有主意了。谢谢你。
【问题讨论】:
-
Samsung在您的列表中出现多次。字典只能有一个键的实例。具有相同键的多个条目应该发生什么? -
我建议使用字典字典,而不是您要求的(无效)输出格式。此格式的结果:{'Sony': {'Handphone': 100}, 'Samsung': {'Handphone': 9, 'Tablet': 10}}
-
嗨@John1024,对不起。我能问一下为什么我想要的输出不是有效的字典吗?
-
@user3271404 您想要的输出现在在语法上是正确的,但它是一个难以创建的输出,并且不能很好地代表这个想法。 Josha 和 Seiji 的答案显示了使用嵌套字典的表示,该字典直观地捕获了您要表示的内容。新的期望输出需要将偶数索引处的元素解释为“对象类型”,并将后续元素解释为其计数。例如,索引 2 是键“Handphone”,索引 3 是手机的数量。虽然这在技术上是可行的,但它是对列表的滥用。 (续...)
-
(续)除了增加复杂性之外,这种数据结构在大型数据集上的性能也会很差。它要求您搜索整个项目类型列表以找到您要查找的内容。如果您有 1000 种制造商的项目类型,平均而言,您必须搜索 1000 个元素才能找到计数的存储位置。
标签: python list dictionary tuples counter