python字典如何计算键值对的总数

{'a': ('123123', 'asdasd', '123asd', '000000', '111111', '123456', '1234567', '12345678', '123456789', 'a123456'),
'b': ('123123', 'asdasd', '123asd', '000000', '111111', '123456', '1234567', '12345678', '123456789', 'a123456'), 
'c': ('123123', 'asdasd', '123asd', '000000', '111111', '123456', '1234567', '12345678', '123456789', 'a123456'), 
'd': ('123123', 'asdasd', '123asd', '000000', '111111', '123456', '1234567', '12345678', '123456789', 'a123456'), 
'e': ('123123', 'asdasd', '123asd', '000000', '111111', '123456', '1234567', '12345678', '123456789', 'a123456'),
'f': ('123123', 'asdasd', '123asd', '000000', '111111', '123456', '1234567', '12345678', '123456789', 'a123456'),
'g': ('123123', 'asdasd', '123asd', '000000', '111111', '123456', '1234567', '12345678', '123456789', 'a123456')}

如上,键值对有70,使用len()方法只能得出7,求在最好不用FOR循环的情况用dict对象最优的自带方法使结果为70(如果有的话)

阅读 7.8k
3 个回答

追求性能能的情况下,列表推导性能最高,循环次之,map最差

所以写法应该是用列表推导更合适

sum([len(_) for _ in d.values()])

那你这是不算是计算键值对的数量啊...而是计算每个值的 length 之和,所以没有办法使用 dict 对象内置的东东来解决

目前我想到的方法就是

sum(map(lambda x: len(x) if hasattr(x, "__len__") else 1, v)
// v 是你的 dict

抛砖引玉吧

还可以用numpy的concatenate()
D=list(Dict. Values())
len(Concatenate(D))
当然这样很不python

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题