gpt4 book ai didi

嵌套字典列表的 Python 平均列表

转载 作者:行者123 更新时间:2023-12-04 02:34:18 25 4
gpt4 key购买 nike

我有一个具有这种结构的列表:

data = [[
{
"id": 713,
"prediction": 4.8,
"confidence": [
{"percentile": "75", "lower": 4.8, "upper": 5.7}
],
},
{
"id": 714,
"prediction": 4.93,
"confidence": [
{"percentile": "75", "lower": 4.9, "upper": 5.7}
],
},
],
[
{
"id": 713,
"prediction": 5.8,
"confidence": [
{"percentile": "75", "lower": 4.2, "upper": 6.7}
],
},
{
"id": 714,
"prediction": 2.93,
"confidence": [
{"percentile": "75", "lower": 1.9, "upper": 3.7}
],
},

]]

所以这里我们有一个包含两个列表的列表,但它也可以是更多列表。每个列表都包含一个带有 id 的预测和另一个带有字典的列表中的置信区间。

我需要的是合并这些列表,以便每个 id 有一个字典和数值的平均值。

我尝试搜索但没有找到与此嵌套结构相匹配的答案。

预期的输出如下所示:

merged_data = [
{
"id": 713,
"prediction": 5.3,
"confidence": [
{"percentile": "75", "lower": 4.5, "upper": 6.2}
],
},
{
"id": 714,
"prediction": 3.93,
"confidence": [
{"percentile": "75", "lower": 3.4, "upper": 4.7}
],
},
]

最佳答案

def merge_items(items):
result = {}
if len(items):
result['id'] = items[0]['id']
result['prediction'] = round(sum([item['prediction'] for item in items]) / len(items), 2)
result['confidence'] = []
result['confidence'].append({
'percentile': items[0]['confidence'][0]['percentile'],
'lower': round(sum(item['confidence'][0]['lower'] for item in items) / len(items), 2),
'upper': round(sum(item['confidence'][0]['upper'] for item in items) / len(items), 2),
})

return result


result = []
ids = list(set([el['id'] for item in data for el in item]))
for id in ids:
to_merge = [sub_item for item in data for sub_item in item if sub_item['id'] == id]
result.append(merge_items(to_merge))

print(result)

关于嵌套字典列表的 Python 平均列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62550573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com