-1
이없는이를 달성하기 더 우아한 방법이 있나요 : 키가있는 경우, 그렇지 않으면 1파이썬 사전 디폴트 값 키와
histogram = {}
...
if histogram.has_key(n):
histogram[n] += 1
else:
histogram[n] = 1
이없는이를 달성하기 더 우아한 방법이 있나요 : 키가있는 경우, 그렇지 않으면 1파이썬 사전 디폴트 값 키와
histogram = {}
...
if histogram.has_key(n):
histogram[n] += 1
else:
histogram[n] = 1
from collections import Counter
histogram = Counter()
...
histogram[n] += 1
숫자 이외의 값은 collections.defaultdict
을 확인하십시오. 이 경우 Counter
대신 defaultdict(int)
을 사용할 수 있지만 Counter
에는 .elements()
및 .most_common()
과 같은 기능이 추가되었습니다. defaultdict(list)
은 또 다른 유용한 예입니다.
Counter
에도 편리한 생성자가 있습니다. 대신에 :
histogram = Counter()
for n in nums:
histogram[n] += 1
당신은 다만 할 수 있습니다
histogram = Counter(nums)
다른 옵션 :
histogram.setdefault(n, 0)
histogram[n] += 1
및 목록의 경우
histogram[n] = histogram.get(n, 0) + 1
을 setdefault
가 될 수 조금 더 유용하다. 쓰레기통 값, 즉 :
def group_by_key_func(iterable, key_func):
"""
Create a dictionary from an iterable such that the keys are the result of evaluating a key function on elements
of the iterable and the values are lists of elements all of which correspond to the key.
>>> dict(group_by_key_func("a bb ccc d ee fff".split(), len)) # the dict() is just for looks
{1: ['a', 'd'], 2: ['bb', 'ee'], 3: ['ccc', 'fff']}
>>> dict(group_by_key_func([-1, 0, 1, 3, 6, 8, 9, 2], lambda x: x % 2))
{0: [0, 6, 8, 2], 1: [-1, 1, 3, 9]}
"""
result = defaultdict(list)
for item in iterable:
result[key_func(item)].append(item)
return result
, 답변을 피해주십시오 :
그리고 마지막 보너스로, 이제 트랙 약간 떨어져 가고, 여기
불분명하고 광범위하며 SW rec, 오타, 의견 기반, 재현 불가능 또는 중복 질문. Write-my-code 요청과 저조한 숙제 문제는 [so]에 대한 논점이 아니며 전문적인 코딩/개인 교습 서비스에 더 적합합니다. 좋은 질문은 [질문], [mcve] 포함, 연구 노력, 미래 방문자에게 유용 할 잠재력을 지니고 있습니다. 부적절한 질문에 답하는 것은 사이트 탐색에 어려움을 겪고 사이트에 악영향을 미쳐 더 많은 시간과 전문 지식을 가진 다른 사용자를 몰아 낼 수 있습니다. – TigerhawkT3defaultdict
내 가장 일반적으로 사용하는 것입니다@ TigerhawkT3 제 질문에 대한 답변이 귀하의 중복 질문보다 훨씬 뛰어나다 고 생각합니다. 다음 번에 이런 종류의 질문이 나옵니다.이 답변에 링크 할 것입니다. 나는 이것을 단번에 해결할 좋은 표준 장소를 원했다. –
나는 동의하지 않는다. 여전히 자신의 대답이 더 나을 것이라고 생각되면 정확한 질문에 응답하면 사이트를 더 쉽게 탐색 할 수 있으므로 기존 질문 중 하나에 게시해야합니다. – TigerhawkT3