Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python字典中获取值_Python_Dictionary - Fatal编程技术网

从python字典中获取值

从python字典中获取值,python,dictionary,Python,Dictionary,我正在努力使用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

我正在努力使用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个值

干杯

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)]
工作原理:

>>> 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)]

+1; 您还可以使用
col1,col2=zip(*(对于v中的x使用map(float,x.split()))
并避免以这种方式构建中间列表。这非常有效!谢谢你的解释+1.您还可以使用
col1,col2=zip(*(对于v中的x使用map(float,x.split()))
并避免以这种方式构建中间列表。这非常有效!谢谢你的解释!