Bir Sayacı (Python 2.7 ve üstü; pre-2.7 seçeneği için aşağıya bakınız) deneyebilirsiniz:
>>> from collections import Counter
>>> Counter('abbba')
Counter({'b': 3, 'a': 2})
O zaman sadece bir sözlük gibi unsurları erişebilirsiniz:
>>> counts = Counter('abbba')
>>> counts['a']
2
>>> counts['b']
3
ve yineleme, sen BurhanKhalid önerisine @ kullanabilirsiniz (eğer anahtarın adımlayabilirsiniz bir sözlük olarak Counter
davranır/değer çiftleri):
>>> for k, v in Counter('abbba').iteritems():
... print k, v
...
a 2
b 3
Python'un 2.7 öncesi bir sürümünü kullanıyorsanız, kodunuzu biraz kolaylaştırmak için bir defaultdict
kullanabilirsiniz (işlem yine de aynıdır - yalnızca fark şu ki, önce anahtarı kontrol etmeniz gerekmez - Eşleşen bir anahtar bulunmazsa 'varsayılan' olur '). Counter
yerleşik diğer özelliklere sahiptir, ancak sadece sayımlarını istediğiniz (ve yaklaşık most_common
umurumda değil, ya örneğin subtract
edememek), bu iyi olmalı ve başka herhangi bir sözlük olarak sadece tedavi edilebilir:
>>> from collections import defaultdict
>>> counts = defaultdict(int)
>>> for c in 'abbba':
... counts[c] += 1
...
>>> counts
defaultdict(<type 'int'>, {'a': 2, 'b': 3})
bir sözlük (veya burada Counter
/defaultdict
) üzerinde iteritems()
kullandığınızda, bir anahtar ve bir değer her yineleme için döndürülür (bu durumda, mektup ve gerçekleşme sayısı olan değerini olmak tuşu). Sözlükleri kullanmayla ilgili dikkat edilmesi gereken bir şey, doğal olarak sırasız olmalarıdır. Bu nedenle, yineleme yaparken 'a', 'b', ...
'u almanız gerekmez. Sıralı bir şekilde bir sözlükte yinelemenin temel bir yolu, tuşların sıralanmış bir listesi (burada alfabetik, ancak sorted
çeşitli seçenekleri işlemek için değiştirilebilir) ve bu anahtar için sözlük değerini döndürür (orada). başka yolları vardır, ancak bu umutla) biraz bilgilendirici olacaktır:
>>> mapping = {'some': 2, 'example': 3, 'words': 5}
>>> mapping
{'some': 2, 'example': 3, 'words': 5}
>>> for key in sorted(mapping.keys()):
... print key, mapping[key]
...
example 3
some 2
words 5
Güzel cevap, ama bana sayaçtaki elemanlar üzerinde nasıl yineleme yapılacağını söyleyebilir misiniz? –
'k, v için Sayaç ('aaaabbbcccddd'). Iteritems():' –
@RondogiannisAristophanes Elbette ki (Ignacio'nun gönderi aşağıdaki en basit yolu gösterir). – RocketDonkey