如何在python

时间:2018-12-06 09:58:01

标签: python

[{"name": "thisisname1", "filebytestotal": 334632,"memorybytes": 5467234},    
{"name": "thisisname2", "filebytestotal": 2351, "memorybytes": 324523},    
{"name": "thisisname3", "filebytestotal": 2314651, "memorybytes": 2235},    
{"name": "thisisname1", "filebytestotal": 13432, "memorybytes": 546534},    
{"name": "thisisname1", "filebytestotal": 32342, "memorybytes": 341234}]

大家好,我试图弄清楚如何为所有匹配的“名称”值取键文件字节和内存字节的平均值。 我的问题是我无法从总列表中的字典中搜索模式。

提前谢谢!

2 个答案:

答案 0 :(得分:0)

这是带有“ memorybytes”键的示例。

dic = [{"name": "thisisname1", "filebytes": 334632,"memorybytes": 5467234},{"name": "thisisname2", "filebytestotal": 2351, "memorybytes": 324523},{"name": "thisisname3", "filebytestotal": 2314651, "memorybytes": 2235},{"name": "thisisname1", "filebytestotal": 13432, "memorybytes": 546534},{"name": "thisisname1", "filebytestotal": 32342, "memorybytes": 341234}]

pattern_name = "1"
all_memorybytes = [element['memorybytes'] for element in dic if pattern_name in element['name'] ]
avg_memorybytes = sum(all_memorybytes) / float(len(all_memorybytes))
print avg_memorybytes

使用文件字节存储总会有一个问题,因为您有两个不同的密钥: “ filebytes”和“ filebytestotal”。如果您在数组的所有元素中都具有此键,则可以通过更改理解列表中的键来使用相同的功能。

答案 1 :(得分:0)

解决此问题的一种方法是将其重组为列表字典。像

{
    label: 'Field Label',
    key: 'field-key',
    operation: somefunctionWithParam(param)   
}

这使用defaultdict填充具有默认值的所有空键。您可以使用内置词典来编写它,但这可以节省几行。