2016-07-20 10 views

cevap

12

collections.defaultdict için kullanım örneğidir, burada varsayılan fabrika için int satırını kullanabilirsiniz. Bir defaultdict

>>> from collections import defaultdict 
>>> d = defaultdict(int) 
>>> d 
defaultdict(<class 'int'>, {}) 
>>> d['k'] +=1 
>>> d 
defaultdict(<class 'int'>, {'k': 1}) 

eksik anahtar arandığında öğeleri oluşturmak üzere yapılandırılmıştır. __getitem__ numaralı arama, bulunmayan bir anahtardan geçtiğinde, varsayılan bir değer üretmek için kullandığı bir satır (burada int()) sağlar. Bu callable, default_factory adlı örnek özniteliğinde saklanır. Bir default_factory girmezseniz

, anahtarları eksik her zamanki gibi bir KeyError alırsınız.

Sonra Sadece çok trivially

>>> d = defaultdict(lambda: 1) 

Bu açıkça da olabilir, bu durumda, istediğiniz başlangıç ​​değer sağlayan bir çağrılabilir geçmek zorunda belki 1 yerine 0. arasında, farklı bir varsayılan değer istedi herhalde herhangi bir normal adlandırılmış işlev.


Bu sizin durumda sadece belirli değerlerin sayısını saklamak için bir sözlük kullanmaya çalışan eğer bir collections.Counter iş için daha uygun olduğunu ancak belirtmek gerekir.

>>> from collections import Counter 
>>> Counter('kangaroo') 
Counter({'a': 2, 'o': 2, 'n': 1, 'r': 1, 'k': 1, 'g': 1}) 
her zaman bir ifadede kullanarak if stamemt dağınıklığı kaldırabilir
0

not alın:

d['k'] = d['k'] + 1 if 'k' in d else 0 
İlgili konular