dictionary = {"key1": ["Item1", "Item2"], "key2": ["Item3", "Item4"]}
위의 딕셔너리로 작업하면서 그것을 반복하고 대부분의 값으로 키를 반환합니다.
나는 이것을 시도했다 :
def most_values(a):
return max(a, key=a.get)
먼저 확인하는 키를 반환하지만 나쁘지는 않습니다. 다음으로 시도했습니다.
def most_values(a):
count = 0
high = ""
for t in a:
if len(a[t]) > count:
count += 1
high = t
return high
그러나 동일한 작업을 수행하며 처음에 반복 된 모든 키를 반환합니다. 또한 매우 우아하게 보이는 솔루션이 아닙니다.
이것에 대해 가장 파이썬적인 방법은 무엇입니까 ?
문제 :
return max(a, key=a.get)
여기가 있다는 것입니다 key
것 실제 목록을 반환 하고 파이썬에서 목록을 사 전적으로 비교 그래서, 길이 없습니다 (목록을 비교하는 두 가지 말할 수있는 일이있다, 그러나 그들은 일종의 사전 식에 결정). 그러나 다음을 사용하여 쉽게 수정할 수 있습니다.
def most_values(a):
return max(a, key=lambda x:len(a[x]))
이것은 선언적 이며 ( 최대 값이 어떻게 계산 되는지 생각할 필요가 없음 ) 우아 하고 읽기 쉽고 부작용 이 없기 때문에 아마도 가장 파이썬적인 방법 일 것입니다 .
두 번째 접근 방식의 문제점은 증가가 아니라 new로 설정count
len(a[t])
해야한다는 것입니다. 따라서 다음과 같이 수정할 수 있습니다.
def most_values(a):
count = -1
high = None
for key,val in a.items():
if len(val) > count:
count = len(val) # semantical error in your code
high = key
return high
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다