使用Python将字典键分配给给定列表

时间:2015-12-23 23:27:10

标签: python list dictionary

我可以将字典键分配给列表或列表列表。然后取平均值,cov等:

input={'03439', '03440'}
list of list= [[PersonA, 7, 8, 9, 10, 11],[PersonB, 12, 13, 14, 15, 16]]

期望输出

{'03439': [PersonA, 7, 8, 9, 10, 11],'03440':[PersonB, 12, 13, 14, 15, 16]}

如果我想取上述的平均值,即使部分字符串和其他值,我也可以这样做吗?

3 个答案:

答案 0 :(得分:2)

如果您想计算那里的平均值,那么您可以

>>> PersonA = 'Pino'
>>> PersonB = 'Gino'
>>> i=('03439', '03440') # tuple
>>> l=[[PersonA, 7, 8, 9, 10, 11],[PersonB, 12, 13, 14, 15, 16]]
>>> av={k:[v[0], sum(v[1:])/(len(v)-1)] for k,v in zip(i,l)}
>>> av
{'03439': ['Pino', 9.0], '03440': ['Gino', 14.0], }

Nota Bene:对于压缩工作input必须是一个可以保持其元素顺序的迭代,例如元组或列表。集和简单字典不能这样做。

答案是否定的,整数不能用字符串求和

答案 1 :(得分:0)

使用zip并构建dict

>>> dict(zip(input, list_of_lists))
{'03439': ['PersonA', 7, 8, 9, 10, 10], '03440': ['PersonB', 12, 13, 14, 15, 16]}

答案 2 :(得分:0)

使用izip和列表理解

from itertools import izip
     [dict([(x,y)])for x,y in izip({'03439', '03440'},[['PersonA', 7, 8, 9, 10, 11],['PersonB', 12, 13, 14, 15, 16]])]

输出

[{'03439': ['PersonA', 7, 8, 9, 10, 11]}, {'03440': ['PersonB', 12, 13, 14, 15, 16]}]