Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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_List_Dictionary_Iteration_Average - Fatal编程技术网

Python 根据关键字平均字典列表

Python 根据关键字平均字典列表,python,list,dictionary,iteration,average,Python,List,Dictionary,Iteration,Average,拥有n个字典的列表,示例如下: n = [ {'GB_written': '6.63', 'avg_write_put': '81.45', 'bGB_written': '4.78', 'bbytes_written': '5129101312', 'body_len': '512', 'body_len_dist': '32', 'bytes_written': '7118499840', 'cache_size': '2.00', 'device': 1

拥有n个字典的列表,示例如下:

n = [
  {'GB_written': '6.63',
  'avg_write_put': '81.45',
  'bGB_written': '4.78',
  'bbytes_written': '5129101312',
  'body_len': '512',
  'body_len_dist': '32',
  'bytes_written': '7118499840',
  'cache_size': '2.00',
  'device': 1,
  'documents': '1000000',
  'duration': '60',
  'engine': 2,
  'key_len': '32',
  'key_len_dist': '2',
  'read_ops': '31287.45',
  'read_us': '31.96',
  'reads': '1879063',
  'thread_reader': '1',
  'thread_writer': '1',
  'total_ops': '2885853',
  'write_amp': '9.4',
  'write_ops': '16763.61',
  'write_us': '59.65',
  'writes': '1006790',
  'written_perdoc': '4.97'},
  # more dictionaries
]
我试图对每个字典进行平均,然后使用函数对每个键进行迭代:

def prepare_data(data):
    avg  = {
        'engine' : 0,
        'device' : 0,
        'documents' : 0,
        'thread_reader': 0,
        'thread_writer' : 0,
        'cache_size' : 0,
        'key_len' : 0,
        'key_len_dist' : 0,
        'body_len' : 0,
        'body_len_dist' : 0,
        'duration' : 0,
        'reads' : 0,
        'read_ops' : 0,
        'read_us' : 0,
        'writes' : 0,
        'write_ops' : 0,
        'write_us' : 0,
        'total_ops' : 0,
        'bytes_written' : 0,
        'GB_written' : 0,
        'bbytes_written' : 0,
        'bGB_written' : 0,
        'avg_write_put' : 0,
        'written_perdoc' : 0,
        'write_amp' : 0
    }
    for key_dict in data:
        for key, val in key_dict.iteritems():
            value= float(val)
            avg[key] = sum( float(avg[key]) + float(value)) / len(data)
    return avg  
我看到了一个错误,它不能遍历浮点值

TypeError: 'float' object is not iterable

我对这是如何发生的以及如何解决此问题并使代码正常工作感到困惑。

您试图在单个
浮点值上使用
sum()

sum( float(avg[key]) + float(value))
这不起作用,因为
sum()
希望您给它一个序列。您不需要使用
sum()
将两个
float
值相加,
+
就足够了

你不能那样计算平均数;首先需要将所有值相加,然后在单独的步骤中除以长度:

for key_dict in data:
    for key, val in key_dict.iteritems():
        avg[key] += float(val)
return {key: value / len(data) for key, value in avg.iteritems()}    

您试图在单个
浮点值上使用
sum()

sum( float(avg[key]) + float(value))
这不起作用,因为
sum()
希望您给它一个序列。您不需要使用
sum()
将两个
float
值相加,
+
就足够了

你不能那样计算平均数;首先需要将所有值相加,然后在单独的步骤中除以长度:

for key_dict in data:
    for key, val in key_dict.iteritems():
        avg[key] += float(val)
return {key: value / len(data) for key, value in avg.iteritems()}    

您试图在单个
浮点值上使用
sum()

sum( float(avg[key]) + float(value))
这不起作用,因为
sum()
希望您给它一个序列。您不需要使用
sum()
将两个
float
值相加,
+
就足够了

你不能那样计算平均数;首先需要将所有值相加,然后在单独的步骤中除以长度:

for key_dict in data:
    for key, val in key_dict.iteritems():
        avg[key] += float(val)
return {key: value / len(data) for key, value in avg.iteritems()}    

您试图在单个
浮点值上使用
sum()

sum( float(avg[key]) + float(value))
这不起作用,因为
sum()
希望您给它一个序列。您不需要使用
sum()
将两个
float
值相加,
+
就足够了

你不能那样计算平均数;首先需要将所有值相加,然后在单独的步骤中除以长度:

for key_dict in data:
    for key, val in key_dict.iteritems():
        avg[key] += float(val)
return {key: value / len(data) for key, value in avg.iteritems()}    

@heinst您确定要传递到字典的函数列表吗?看见question@heinst您确定要传递到字典的函数列表吗?看见question@heinst您确定要传递到字典的函数列表吗?看见question@heinst您确定要传递到字典的函数列表吗?见问题