按照here提供的建议工作,并且有两个收入表需要提取(包含相同的水果但不同的品牌):
我的结尾是两个defaultdicts
,共defaultdicts
:
d1
defaultdict(<function <lambda> at 0x105dd42a8>, {u'Kiwi': defaultdict(<type 'int'>, {u'NZKiwi': 1.2}), u'Pear': defaultdict(<type 'int'>, {u'PearShaped': 6.2}), u'Banana': defaultdict(<type 'int'>, {u'BananaBrand': 4.0, u'OtherBrand': 3.2}), u'Apple': defaultdict(<type 'int'>, {u'CrunchApple': 1.7})})
d2
^{pr2}$假设在进行上述处理之前,我不能合并这两个表,那么现在如何组合这些defaultdict,以便维护键(水果类型),而它们各自的值却被连接在每个键上?换言之,我如何最终得出以下结论:
defaultdict(<function <lambda> at 0x105dd41b8>, {u'Kiwi': defaultdict(<type 'int'>, {u'n': 1.2, u'NZKiwi': 1.2}), u'Pear': defaultdict(<type 'int'>, {u'p': 6.2, u'PearShaped': 6.2}), u'Banana': defaultdict(<type 'int'>, {u'b': 4.0, u'o': 3.2, u'BananaBrand': 4.0, u'OtherBrand': 3.2}}), u'Apple': defaultdict(<type 'int'>, {u'a': 1.7, u'CrunchApple': 1.7})})
事实上,它不一定非得采用这种结构——实际上,我需要的是从中提取每个产品的单个品牌数量对。最后得到的结果是香蕉含有4个品牌数量对的dict,另一个包含两个品牌数量对的猕猴桃dict
BananaDict = {}
KiwiDict ={}
AppleDict = {}
PearDict = {}
for k, v in d1.iteritems():
if k == 'Banana':
BananaDict.update(v)
elif k == 'Kiwi'
etc.
etc.
然后对d2重复上述步骤。在
你可以使用一个简单的for循环,例如-
我注意到另一个答案并不能解释新字典有一个原字典没有的密钥的情况。在
相关问题 更多 >
编程相关推荐