从输出中删除函数和命令
Remove the function and command from the output
我正在试用带有 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'>,
以获得我想要的输出。谢谢!
只需将每个 defaultdict
转换回常规 dict
,您可以使用字典理解轻松完成:
{ k:dict(v) for k,v in d.items() }
#output
{'Sony': {'Handphone': 100}, 'Samsung': {'Tablet': 10, 'Handphone': 9}}
如果要删除类型信息,请尝试以 JSON 格式转储数据。
在顶部插入:
import json
底部是:
print json.dumps(d, indent=4)
你的代码应该像这样打印出来:
{
"Sony": {
"Handphone": 100
},
"Samsung": {
"Handphone": 9,
"Tablet": 10
}
}
如果顺序无关紧要,这将作为解决方案。
我正在试用带有 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'>,
以获得我想要的输出。谢谢!
只需将每个 defaultdict
转换回常规 dict
,您可以使用字典理解轻松完成:
{ k:dict(v) for k,v in d.items() }
#output
{'Sony': {'Handphone': 100}, 'Samsung': {'Tablet': 10, 'Handphone': 9}}
如果要删除类型信息,请尝试以 JSON 格式转储数据。
在顶部插入:
import json
底部是:
print json.dumps(d, indent=4)
你的代码应该像这样打印出来:
{
"Sony": {
"Handphone": 100
},
"Samsung": {
"Handphone": 9,
"Tablet": 10
}
}
如果顺序无关紧要,这将作为解决方案。