从python字典中获取值

2024-10-03 13:26:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习python词典。我创建了一个字典,看起来像:

d = {'0.500': ['18.4 0.5', '17.9 0.4', '16.9 0.4', '18.6 0.4'],
     '1.000': ['14.8 0.5', '14.9 0.5', '15.6 0.4', '15.9 0.3'],
     '0.000': ['23.2 0.5', '23.2 0.8', '23.2 0.7', '23.2 0.1']}

最后我想:

0.500 17.95 0.425 

这是关键,平均(18.4+17.9+16.9+18.6),平均(0.5+0.4+0.4+0.4)

(1.000和0.000的平均值相同)

最初我的字典只有两个值,所以我可以依赖索引:

for key in d:
    dvdl1 = d[key][0].split(" ")[0]
    dvdl2 = d[key][1].split(" ")[0]

    average = ((float(dvdl1)+float(dvdl2))/2)

但是现在我想让我的代码为不同的字典长度工作,比如说4个(上面的例子)或5或6个值。。。你知道吗

干杯!你知道吗


Tags: key代码infor字典float例子关键
1条回答
网友
1楼 · 发布于 2024-10-03 13:26:13
for k,v in d.iteritems():
    col1, col2 = zip(*[map(float,x.split()) for x in v])
    print k, sum(col1)/len(v), sum(col2)/len(v)
...     
0.500 17.95 0.425
1.000 15.3 0.425
0.000 23.2 0.525

工作原理:

>>> v = ['18.4 0.5', '17.9 0.4', '16.9 0.4', '18.6 0.4']

首先在空白处拆分每个项目并对其应用float,这样我们就得到了一个列表列表:

>>> zipp = [map(float,x.split()) for x in v]
>>> zipp
[[18.4, 0.5], [17.9, 0.4], [16.9, 0.4], [18.6, 0.4]]    #list of rows

现在我们可以将zip*一起使用,这起到解压的作用,我们将得到一个列列表。你知道吗

>>> zip(*zipp)
[(18.4, 17.9, 16.9, 18.6), (0.5, 0.4, 0.4, 0.4)]

相关问题 更多 >