Skip to main content
 首页 » 编程设计

python之在python中将列表转换为字典

2025年05月04日11lhb25

我有一个 python 字典的形式:

a1 = { 
        'SFP_1': ['cat', '3'],  
        'SFP_0': ['cat', '5', 'bat', '1'] 
     } 

我需要的最终结果是以下形式的字典:

{'bat': '1', 'cat': '8'} 

我目前正在这样做:

b1 = list(itertools.chain(*a1.values())) 
c1 = dict(itertools.izip_longest(*[iter(b1)] * 2, fillvalue="")) 

这给了我输出:

>>> c1 
{'bat': '1', 'cat': '5'} 

我可以遍历字典并得到它,但是谁能给我一个更 pythonic 的方式来做同样的事情?

请您参考如下方法:

使用 defaultdict :

import itertools 
from collections import defaultdict 
 
a1 = {u'SFP_1': [u'cat', u'3'], u'SFP_0': [u'cat', u'5', u'bat', u'1']} 
 
b1 = itertools.chain.from_iterable(a1.itervalues()) 
c1 = defaultdict(int) 
for animal, count in itertools.izip(*[iter(b1)] * 2): 
    c1[animal] += int(count) 
# c1 => defaultdict(<type 'int'>, {u'bat': 1, u'cat': 8}) 
 
c1 = {animal: str(count) for animal, count in c1.iteritems()} 
# c1 => {u'bat': '1', u'cat': '8'}