嵌套python字典中的数据操作

2024-05-12 18:35:07 发布

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

我有从上一个函数获得的字典列表:

[{'chapter1': [{'attended_right_percentage': 100.0, 'seq_no': '1'}, {'attended_right_percentage': 100.0, 'seq_no': '2'}, {'attended_right_percentage': 100.0, 'seq_no': '3'}, {'attended_right_percentage': 50.0, 'seq_no': '4'}, {'attended_right_percentage': 0.0, 'seq_no': '5'}]}],
[{'chapter2': [{'attended_right_percentage': 100.0, 'seq_no': '1'}, {'attended_right_percentage': 100.0, 'seq_no': '2'}, {'attended_right_percentage': 100.0, 'seq_no': '3'}, {'attended_right_percentage': 50.0, 'seq_no': '4'}, {'attended_right_percentage': 0.0, 'seq_no': '5'}]}]

现在我想获取每个章节的数据,即attended_right_percentage的平均值。你知道吗


Tags: 数据函数noright列表字典seq平均值
2条回答

你的数据结构有点奇怪(我已经修改了一点)。你知道吗

data = [
        {
            "chapter1": [
                {
                    "seq_no": "1",
                    "attended_right_percentage": 100.0
                },
                {
                    "seq_no": "2",
                    "attended_right_percentage": 100.0
                },
                {
                    "seq_no": "3",
                    "attended_right_percentage": 100.0
                },
                {
                    "seq_no": "4",
                    "attended_right_percentage": 50.0
                },
                {
                    "seq_no": "5",
                    "attended_right_percentage": 0.0
                }
            ]
        },
        {
            "chapter2": [
                {
                    "seq_no": "1",
                    "attended_right_percentage": 100.0
                },
                {
                    "seq_no": "2",
                    "attended_right_percentage": 100.0
                },
                {
                    "seq_no": "3",
                    "attended_right_percentage": 100.0
                },
                {
                    "seq_no": "4",
                    "attended_right_percentage": 50.0
                },
                {
                    "seq_no": "5",
                    "attended_right_percentage": 0.0
                }
            ]
        }
]

def mean(nums):
    return sum(nums) / float(len(nums))

for chapter in data:
    for name, sequence in chapter.items():
        print(mean([seq['attended_right_percentage'] for seq in sequence]))

但我和你在一起-你不应该发布这样的问题。这是一门基本的python知识。你知道吗

首先,如果你的所有章节都列在一个列表上会更好,比如:

chapters_list = [
    {'chapter1': [
        {'attended_right_percentage': 100.0, 'seq_no': '1'},
        {'attended_right_percentage': 100.0, 'seq_no': '2'},
        {'attended_right_percentage': 100.0, 'seq_no': '3'},
        {'attended_right_percentage': 50.0, 'seq_no': '4'},
        {'attended_right_percentage': 0.0, 'seq_no': '5'}
    ]},
    {'chapter2': [
        {'attended_right_percentage': 100.0, 'seq_no': '1'},
        {'attended_right_percentage': 100.0, 'seq_no': '2'},
        {'attended_right_percentage': 100.0, 'seq_no': '3'},
        {'attended_right_percentage': 50.0, 'seq_no': '4'},
        {'attended_right_percentage': 0.0, 'seq_no': '5'}
    ]}
]

然后你可以这样解决你的任务:

chapters_stats = dict()

for chapter in chapters_list:
    for chapter_title, stats_list in chapter.items():
        calculated_amount = 0
        calculated_sum = 0
        for stat_dct in stats_list:
            for key, value in stat_dct.items():
                if key == 'attended_right_percentage':
                    calculated_sum += value
                    calculated_amount += 1
        chapters_stats[chapter_title] = calculated_sum / calculated_amount

print(chapters_stats)

相关问题 更多 >