您好我希望将此元组列表转换为字典。因为我是python的新手,我正在想办法转换成字典。如果只有一个值,我只能转换成字典。就我而言,其中有两个值。我将在下面详细说明:
`List of tuples: [('Samsung', 'Handphone',10), ('Samsung', 'Handphone',-1),
('Samsung','Tablet',10),('Sony','Handphone',100)]`
正如您在上面所看到的,我希望将“三星”作为键,将“手机”和“10”作为键的值。
我想要的输出是:
`Output: {'Sony': ['Handphone',100], 'Samsung': ['Tablet',10,'Handphone', 9]}`
正如您在上面所看到的,项目“手机”和“平板电脑”是按照键值分组的,在我的情况下是索尼和三星。如果项目属于同一项目和相同的密钥(三星或索尼),则会增加/减少该项目的数量。
我非常感谢你们为实现上述输出而提出的任何建议和想法。我真的没想到了。谢谢。
答案 0 :(得分:3)
defaultdict
from collections import defaultdict
the_list = [
('Samsung', 'Handphone', 10),
('Samsung', 'Handphone', -1),
('Samsung', 'Tablet', 10),
('Sony', 'Handphone', 100)
]
d = defaultdict(lambda: defaultdict(int))
for brand, thing, quantity in the_list:
d[brand][thing] += quantity
结果将是
{
'Samsung': {
'Handphone': 9,
'Tablet': 10
},
'Sony': {
'Handphone': 100
}
}
答案 1 :(得分:0)
您可以使用字典理解
来完成此操作你真正想要的是元组用于密钥,它们将是公司和设备。
std::vector<int> V={5,4,3,2,1,6,7,8};
答案 2 :(得分:0)
您的输出有问题,可以通过正确的标识看到:
{
'Sony': ['Handphone',100],
'Samsung': ['Tablet',10],
['Handphone', 9]
}
手机不是“三星”的一部分,您可以列出要获取的列表:
{
'Sony': [
['Handphone',100]
],
'Samsung': [
['Tablet',10],
['Handphone', 9]
]
}
使用:
my_list = [('Samsung', 'Handphone',10), ('Samsung', 'Handphone',-1), ('Samsung','Tablet',10),('Sony','Handphone',100)]
result = {}
for brand, device, value in my_list:
# first verify if key is present to add list for the first time
if not brand in result:
result[brand] = []
# then add new list to already existent list
result[brand] += [[device, value]]
但我认为最好的格式是dict:
{
'Sony': {
'Handphone': 100
},
'Samsung': {
'Tablet': 10,
'Handphone': 9
}
}
那就像:
my_list = [('Samsung', 'Handphone',10), ('Samsung', 'Handphone',-1), ('Samsung','Tablet',10),('Sony','Handphone',100)]
result = {}
for brand, device, value in my_list:
# first verify if key is present to add dict for the first time
if not brand in result:
result[brand] = {}
# then add new key/value to already existent dict
result[brand][device] = value