Spezialdicts

11/09/2010 - 18:14 von Ole Streicher | Report spam
Hallo,

ich benötige zwei etwas speziellere Dicts:

1. eine Art defaultdict mit einer Factory, die mit dem Parameter
aufgerufen wird. Ich möchte gerne

a = dict()
b = a.setdefault(key, myfactory(key))

ersetzen durch

a.parameterfactorydict(myfactory)
b = a[key]

2. ein unverànderliches Dict:

a = { 'eins':1, 'zwo':2 }
b = immutabledict(a)
b['drei'] = 3 # soll eine Exception hervorrufen

Das kann man zwar auch selber bauen, aber "batteries included"
vielleicht gibt es das ja schon fertig?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Peter Otten
12/09/2010 - 11:26 | Warnen spam
Ole Streicher wrote:

ich benötige zwei etwas speziellere Dicts:

1. eine Art defaultdict mit einer Factory, die mit dem Parameter
aufgerufen wird. Ich möchte gerne

a = dict()
b = a.setdefault(key, myfactory(key))

ersetzen durch

a.parameterfactorydict(myfactory)
b = a[key]

class D(dict):






... def __init__(self, factory):
... self.factory = factory
... def __missing__(self, key):
... result = self[key] = self.factory(key)
... return result
...
d = D(str.upper)
"x" in d






False
d






{}
d["x"]






'X'
d






{'x': 'X'}
d["alpha"] = "beta"
d






{'x': 'X', 'alpha': 'beta'}

2. ein unverànderliches Dict:

a = { 'eins':1, 'zwo':2 }
b = immutabledict(a)
b['drei'] = 3 # soll eine Exception hervorrufen



Das erfordert etwas mehr Aufwand, wenn's einigermaßen wasserdicht sein soll.

http://code.activestate.com/recipes...tionaries/

Das kann man zwar auch selber bauen, aber "batteries included"
vielleicht gibt es das ja schon fertig?



Was man mit diesem neumodischen Zeug -- diesen /Suchmaschinen/ -- nicht
alles findet ;)

Ähnliche fragen