将列表拆分为字典

时间:2014-03-24 16:12:11

标签: python dictionary

我有以下list对象(它还不是字典)。 list包含一个名称,产品及其携带的数量很大但我只放了3个样本:

file = open('.txt')
rdr = file.read()
prod_lists = rdr.split('\n')

所以prod_lists如下:

prod_lists = {'allen':{'tv':100,'playstation':200,'xbox':30},
'balden':{'tv':200,'laptop':300},
'cathy':{'watch':100,'printer':200}}

如何将上述list拆分为(key, value)字典?另外,我如何为每个人找到sum个产品。这是我尝试做的不起作用的事情:

prod_dict = dict((k.split(),v.split()) for k,v in (i.split('{')for i in prod_lists))
for key,value in prod_dict.items():
    print(key,value)

1 个答案:

答案 0 :(得分:-1)

我不确定你要问的是外容器是字典

>>> prod_lists = {'allen':{'tv':100,'playstation':200,'xbox':30},
'balden':{'tv':200,'laptop':300}, 'cathy':{'watch':100,'printer':200}}
>>> type(prod_lists)
<class 'dict'>
>>> type(prod_lists['allen'])
<class 'dict'>

你可以看到我复制了你的prod_lists然后问Python是什么。

因此,如果您想单独访问任何内部词典,只需按名称调用

即可
>>> prod_lists['allen']
{'tv': 100, 'playstation': 200, 'xbox': 30}

我可以告诉它的方式是字典,它被封装在{}中。 Python是非常自省的,如果你不确定对象的类型,你只需要问

for vendor in prod_lists:
    total = 0
    for prod, q in prod_lists[vendor].items():
        print vendor, prod,q
        total +=q
    print 'VENDOR TOTAL', vendor, total

balden tv 200
balden laptop 300
VENDOR TOTAL balden 500
allen tv 100
allen playstation 200
allen xbox 30
VENDOR TOTAL allen 330
cathy printer 200
cathy watch 100
VENDOR TOTAL cathy 300