Recent Changes - Search:

Oktatás

* Programozás 1
  + feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

Teaching

* Programming 1 (BI)
  ◇ exercises
  ◇ quick link

* Scripting Languages
  ◇ exercises
  ◇ quick link

teaching assets


Félévek

* aktuális (2023/24/2)
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

Py /

20170516a

Counter

A Counter szintén a dict osztály leszármazottja. Egy Counter-nek megadható egy iterálható objektum, s összeszámolja, hogy abban melyik elem hányszor fordul elő, s ebből felépít egy szótárat. Hasonlít egy multihalmazra is.

Ha pl. megadunk neki egy sztringet, akkor összeszámolja, hogy melyik karakter hányszor fordul elő. Ha megadunk egy listát, akkor megnézi, hogy melyik listaelem hányszor fordul elő.

Az itt leírtakat természetesen egy sima dict-tel is meg lehetne valósítani. A Counter célja, hogy bizonyos gyakori műveleteket még egyszerűbbé tegyen.

Egyszerű használat

from collections import Counter

def main():
     c1 = Counter('python programming')
     print(c1)
     #
     li = ['aa', 'cc', 'aa', 'dd']
     c2 = Counter(li)
     print(c2)
     #
     print(c2['aa'])
     print(c2['xx'])    # non-existing key
Counter({'g': 2, 'm': 2, 'o': 2, 'n': 2, 'p': 2, 'r': 2, 'a': 1, ' ': 1, 'i': 1, 'h': 1, 't': 1, 'y': 1})
Counter({'aa': 2, 'cc': 1, 'dd': 1})
2
0

Mint látható, nem létező kulcsra hivatkozva 0 értéket kapunk vissza (sima dict esetén egy KeyError kivételt kapnánk).

Elemek

def main():
     c = Counter({'a': 3, 'r': 1, 'l': 1, 'd': 1})
     #
     print(c)
     print(sorted(c.elements()))    # iterator over the elements
Counter({'a': 3, 'r': 1, 'l': 1, 'd': 1})
['a', 'a', 'a', 'd', 'l', 'r']

(Üres) Counter frissítése

def main():
     c = Counter()
     #
     c.update('aladar')
     print(c)
     c.update('bela')
     print(c)
Counter({'a': 3, 'r': 1, 'l': 1, 'd': 1})
Counter({'a': 4, 'l': 2, 'b': 1, 'e': 1, 'd': 1, 'r': 1})

dict-ek összesítése

def main():
     c = Counter({'a': 1, 'b': 2})    # can be initialized with a dict too
     #
     print(c)
     d = {'a': 3, 'b': 1, 'e': 9}
     c.update(d)
     print(c)
Counter({'b': 2, 'a': 1})
Counter({'e': 9, 'a': 4, 'b': 3})

Kivonás

Az előző update művelet ellenkezője. Felfogható két multihalmaz különbségének is.

def main():
     c = Counter({'e': 9, 'a': 4, 'b': 3})
     print(c)
     #
     d = {'e': 1, 'a': 2}
     print(d)
     c.subtract(d)
     print(c)
Counter({'e': 9, 'a': 4, 'b': 3})
{'a': 2, 'e': 1}
Counter({'e': 8, 'b': 3, 'a': 2})

Leggyakoribb elemek

def main():
     c = Counter('abracadabra')
     print(c)
     print(c.most_common())    # show all in descending order
     print(c.most_common(3))   # show the most common 3 items
Counter({'a': 5, 'r': 2, 'b': 2, 'c': 1, 'd': 1})
[('a', 5), ('r', 2), ('b', 2), ('c', 1), ('d', 1)]
[('a', 5), ('r', 2), ('b', 2)]

Aritmetikai műveletek

Két Counter összesítése, különbségképzés, metszet, unió: itt.

Linkek

Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2017 May 16, 12:51