У меня есть следующая небольшая программа:
ages=[23,23,43,54,34,22,43,23]
histogram={}
for age in ages:
if not age in histogram:
histogram[age]=1
else:
histogram[age]+=1
for age,count in sorted(histogram.items()):
print "Age: %d Number of people: %d"%(age,count)
Она создает простую гистограмму возрастов людей в списке. Однако я считаю двойной поиск в хэше гистограммы довольно некрасивым. Я знаю, что доступ к хешу в основном O (1), так что это не так неэффективно, как может показаться, но все же ...
Я пробовал различные обходные пути, такие как попытка использовать setdefault, но следующие не полетит:
histogram.setdefault("age",0)+=1 #<- Incorrect
Я знаю, что могу использовать defaultdict, но он меняет поведение созданного объекта dict гистограммы, чего я не хочу.
Если бы у меня был способ установить для этого вопроса «низкий приоритет», я бы сделал это, потому что, очевидно, это не очень важно. Но я давно искал умное и / или элегантное решение этой проблемы.
Итак, вопрос: как увеличить целое число с помощью ключа в dict или установить его на 1, если его не существует?