반응형
다음과 같은 사전이 있습니다.
G={'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}
예를 들어 값의 평균을 찾아야합니다. .values ()
, .items () <와 같은 내장 함수를 사용하지 않고 간단한
for
루프를 사용하는 mean (18,17,19,15,0) / code> 등. 다음을 시도했지만 오류가 발생합니다.
d=[float(sum(values)) / len(values) for key, values in G]
return (d)
ValueError: need more than 1 value to unpack
누군가이 문제를 해결하도록 도울 수 있습니까 ????
해결 방법
"간단한 for 루프"로이를 수행하려면 dict 메서드 사용에 대한 제약 조건을 사용합니다.
G = {'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}
count = 0
_sum = 0
for key in G:
count += 1
_sum += G[key]
print('this is the mean: ', _sum/count)
dict 메서드를 피해야한다면 분명히 이것은 학문적 연습입니다.
그 제약없이 :
표준 라이브러리의 statistics
모듈에는 mean
메소드가 있습니다. 이는 제 생각에 처음입니다 (표준 라이브러리에는 타사 패키지가 필요하지 않기 때문).
>>> G={'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}
>>> from statistics import mean
>>> mean(G[k] for k in G)
13.8
numpy 및 pandas와 같은 타사 패키지에는 mean
메소드가있는 객체가 있습니다.
>>> from numpy import array
>>> array([G[k] for k in G]).mean()
13.8
>>> from pandas import Series
>>> Series([G[k] for k in G]).mean()
13.8
values ()
메서드를 사용하도록 허용하면 반복 가능한 언 패킹으로 조금 더 간단 해집니다. 어떤 이유로 다른 답변이 해당 조건을 위반하므로보다 효율적인 방법을 보여야한다고 생각합니다.
>>> Series([*G.values()]).mean()
13.8
참조 페이지 https://stackoverflow.com/questions/22416450
반응형
'파이썬' 카테고리의 다른 글
파이썬 주어진 인덱스로 파이썬 목록의 하위 목록을 얻습니까? (0) | 2020.12.20 |
---|---|
파이썬 numpy 배열을 초기화하고 채우는 가장 좋은 방법은 무엇입니까? (0) | 2020.12.20 |
파이썬 목록의 키와 Python의 빈 값으로 사전을 초기화하는 방법은 무엇입니까? (0) | 2020.12.20 |
파이썬 Django : "TypeError : [] is not JSON serializable"이유는 무엇입니까? (0) | 2020.12.20 |
파이썬 현재 txt를 덮어 쓰지 않고 파일에 파이썬 쓰기 (0) | 2020.12.20 |
댓글