从outpu中删除函数和命令

2024-04-19 09:07:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在试用带有lamba函数的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

我的结果是:

defaultdict(<function <lambda> at 0x02715C70>, {'Sony': defaultdict(<type 
'int'>, {'Handphone': 100}), 'Samsung': defaultdict(<type 'int'>, {'Handphone': 
9, 'Tablet': 10})})

我希望我的结果是:

{
    'Samsung': {
        'Handphone': 9, 
        'Tablet': 10
    },
    'Sony': {
        'Handphone': 100
    }
}

我应该如何删除defaultdict(<function <lambda> at 0x02715C70>, {'Sony': defaultdict(<type int'>,以获得所需的输出。谢谢您!你知道吗


Tags: thelambdatypefunctionatquantitylistint
2条回答

如果要删除类型信息,请尝试以JSON格式转储数据。你知道吗

在顶部插入:

import json

下面是:

print json.dumps(d, indent=4)

你的代码应该这样打印出来:

{
    "Sony": {
        "Handphone": 100
    }, 
    "Samsung": {
        "Handphone": 9, 
        "Tablet": 10
    }
}

如果顺序无关紧要,这将是一个解决办法。你知道吗

只需将每个defaultdict转换回一个规则的dict,就可以使用dict理解轻松完成:

{ k:dict(v) for k,v in d.items() }
#output
{'Sony': {'Handphone': 100}, 'Samsung': {'Tablet': 10, 'Handphone': 9}}

相关问题 更多 >