Python setdefault not lvalue, какие-либо обходные пути?

У меня есть следующая небольшая программа:

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, если его не существует?

0
задан Janne Karila 23 January 2012 в 13:42
поделиться