gpt4 book ai didi

python - 将python嵌套循环的结果存储到字典中

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

在做一些编码练习时,我遇到了这个问题:
“编写一个函数,该函数接收带有键和整数列表的字典列表,并返回一个带有每个列表标准差的字典。”
例如

input = [

{
'key': 'list1',
'values': [4,5,2,3,4,5,2,3]
},

{
'key': 'list2',
'values': [1,1,34,12,40,3,9,7],
}
]
答案: Answer: {'list1': 1.12, 'list2':14.19}注意,'values'实际上是值列表的关键,一开始有点骗人!
我的尝试:
def stdv(x):

for i in range(len(x)):

for k,v in x[i].items():
result = {}
print(result)

if k == 'values':
mean = sum(v)/len(v)
variance = sum([(j - mean)**2 for j in v]) / len(v)

stdv = variance**0.5

return stdv # not sure here!!

result = {k, v} # this is where i get stuck
我能够计算标准偏差,但我不知道如何
按照答案中的建议将结果放回字典中。
任何人都可以照亮它吗?
非常感激!

最佳答案

我会尝试 std 计算的另一种实现,因为它是 O(2n),因为您首先循环获取平均值,然后获取 std。如 here 所述,它可以在单个循环中完成。 .
我不确定,但我认为 numpy 的实现就是这样做的。
所以,你可以创建一个这样的函数:

from numpy import std
def stdv(list_of_dicts):
return {d['key'] : std(d['values']) for d in list_of_dicts}
更新:
如果你真的需要自己实现 std 计算,你可以为此创建另一个函数:
def std(arr):
n = len(arr)
if n == 0: return 0

_sum, _sq_sum = 0, 0
for v in arr:
_sum += v
_sq_sum += v ** 2
_sq_mean = (_sum / n) ** 2
return (_sq_sum / n - _sq_mean) ** 0.5
既然你说这是一个编码练习,我会试着指出我认为你的错误在哪里。
您在 x[i].items() 中进行了循环以获取键和值,然后检查键是否为“值”以执行标准计算。由于您想将结果存储在字典中,您还需要同时在 'key' 字段中拥有该值。通过该循环,您一次只能获得其中一个。
另外,没有直接关系,但是如果你想遍历一个列表来获取里面的值,并且你不关心索引,最好这样做:
for x_i in x:
for k,v in x_i.items():
代替:
for i in range(len(x)):
for k,v in x[i].items():
我会推荐 this video .

关于python - 将python嵌套循环的结果存储到字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65269110/

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