dict
Ekkart Kleinod
•
a = dict(one=1, two=2, three=3) b = {'three': 3, 'two': 2, 'one': 1} c = dict([('two', 2), ('one', 1), ('three', 3)]) d = dict(zip(['one', 'two', 'three'], [1, 2, 3])) e = dict({'three': 3, 'one': 1, 'two': 2}) a == b == c == d == e
- Zugriff auf Elemente:
dict[k]
oderdict.get(k)
, wobei get noch einen optionalen Defaultwert hat:dict.get(k, default)
- Keys müsse hashable sein
Dict Comprehension
Dicts erstellen
dial_codes = [ (880, 'Bangladesh'), (55, 'Brazil'), (86, 'China'), (91, 'India'), (62, 'Indonesia'), (81, 'Japan'), (234, 'Nigeria'), (92, 'Pakistan'), (7, 'Russia'), (1, 'United States'), ] country_dial = {country: code for code, country in dial_codes} print(country_dial) print({code: country.upper() for country, code in sorted(country_dial.items()) if code < 70})
{'Bangladesh': 880,
'Brazil': 55,
'China': 86,
'India': 91,
'Indonesia': 62,
'Japan': 81,
'Nigeria': 234,
'Pakistan': 92,
'Russia': 7,
'United States': 1}
{55: 'BRAZIL', 62: 'INDONESIA', 7: 'RUSSIA', 1: 'UNITED STATES'}
Key erzeugen und Element einfügen
bisher
index = {} if "mykey" not in index: index["mykey"] = [] index["mykey"].append("Hello")
kürzer mit default-Wert
index = {} index.setdefault("mykey", []).append("Hello")
kürzer mit defaultdict
- alle keys haben denselben Typ (
list
) - Aufruf von
dict[k]
erzeugt den Defaultwert - bis dahin funktionieren
k in dict
unddict.get(k)
wie gewohnt
import collections index = collections.defaultdict(list) index["mykey"].append("Hello")
Elemente zählen mit Counter
most_common
zeigt die angegebene Anzahl an, egal, ob es noch andere Elemente mit gleichem count gibt
import collections ct = collections.Counter('abracadabra') print (ct) print(ct.most_common(2))
Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
[('a': 5), ('b': 2)]
keys, value, items
.keys()
, .values()
und .items()
erzeugen read-only-Instanzen von dict_keys
, dict_values
und dict_items
Sehr schnell, kein Overhead, immutable. Gern benutzen.