gpt4 book ai didi

python - 循环遍历嵌套字典值以填充第二个字典 - python

转载 作者:行者123 更新时间:2023-12-04 10:31:57 26 4
gpt4 key购买 nike

我有以下字典:

rts = {
"PO1": {
"congruent": {

"rt": [0.647259, 0.720116, 0.562909, 0.538918, 0.633367],
"correct": ["True", "True", "True", "True", "True", "False",]
},

"incongruent": {

"rt": [0.647259, 0.720116, 0.562909, 0.538918, 0.633367],
"correct": ["True", "True", "True", "True", "True", "False",]

}
},
"PO2": {
"congruent": {

"rt": [0.647259, 0.720116, 0.562909, 0.538918, 0.633367],
"correct": ["True", "True", "True", "True", "True", "False",]
},

"incongruent": {

"rt": [0.647259, 0.720116, 0.562909, 0.538918, 0.633367],
"correct": ["True", "True", "True", "True", "True", "False",]

}
}
}


这是我到目前为止的代码:
import csv
from pathlib import Path
import json
import numpy as np
from numpy import array


def main():
rts = {}
statsDict = {}

data = Path('C:/Users/oli.warriner/Desktop/data(2)/data')

for csvfile in data.glob('*.csv'):
key = csvfile.stem

with csvfile.open() as f:
csv_reader = csv.reader(f)

# Skip the header
_ = next(csv_reader)

rts[key] = {
'congruent': {
'rt': [],
'correct': []
},
'incongruent': {
'rt': [],
'correct': []
},
}

for tn, ctext, cname, condition, response, rt, correct in csv_reader:
rts[key][condition]['rt'].append(float(rt))
rts[key][condition]['correct'].append(correct)


for k in rts:
key = k
statsDict[key] = {
'congruent': {
'mean': [],
'stddev': [],
'correct': []
},
'incongruent': {
'mean': [],
'stddev': [],
'correct': []
},
}
for n in rts[k]:
for i in rts[key][n]

array([rts[k] for k in rts]).mean()
print(array)

if __name__ == "__main__":
main()

我正在读取一个 csv 文件目录以生成您在上面看到的“rts”字典(它比我刚刚在这里缩短的要大得多)。

我现在要做的是使用“rts”字典来填充“statsDict”。

我需要遍历“rts”字典并分别计算每个键的“一致”和“不一致”值中“rt”值的均值和标准差。

然后我需要为每个键使用“正确”的 bool 值来计算每个键中真值的百分比。

我正在设法遍历字典上的前几层,但是现在我有点迷茫,我不确定如何进入下一层并开始进行我需要的统计计算。

希望这对人们来说已经足够清楚了。如果您有任何问题,请告诉我。
提前致谢!

最佳答案

基于rts的例子给定,您可以使用以下代码片段构建一个带有统计信息的字典:

import statistics
import json

rts = { ... as given ... }

stats_dict = {}
for k in rts.keys():
stats_dict[k] = {}
for ck in rts[k].keys():
stats_dict[k][ck] = {}
stats_dict[k][ck]["mean"] = statistics.mean(rts[k][ck]["rt"])
stats_dict[k][ck]["stdev"] = statistics.stdev(rts[k][ck]["rt"])
stats_dict[k][ck]["true_percentage"] = len([x for x in rts[k][ck]["correct"] if x == "True"]) / len(rts[k][ck]["correct"])

print(json.dumps(stats_dict, indent=2))

笔记
  • 您不一定需要numpy计算静力。内置statistics包够用
  • 您不需要提前初始化字典。只需使用给定字典的键 rts并为统计字典使用相同的键 stats_dict

  • 输出
    {
    "PO1": {
    "congruent": {
    "mean": 0.6205138,
    "stdev": 0.07207165926839758,
    "true_percentage": 0.8333333333333334
    },
    "incongruent": {
    "mean": 0.6205138,
    "stdev": 0.07207165926839758,
    "true_percentage": 0.8333333333333334
    }
    },
    "PO2": {
    "congruent": {
    "mean": 0.6205138,
    "stdev": 0.07207165926839758,
    "true_percentage": 0.8333333333333334
    },
    "incongruent": {
    "mean": 0.6205138,
    "stdev": 0.07207165926839758,
    "true_percentage": 0.8333333333333334
    }
    }
    }

    关于python - 循环遍历嵌套字典值以填充第二个字典 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60378720/

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