ich möchte ein defaultdict(int) zu ein List-Objekt konvertieren.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from collections import defaultdict
# 1. Versuch
a = defaultdict(int)
a[2] = 20
a[4] = 40
a[9] = 90
print ' >> [1] defaultdict in ->', a.items()
b = [a[item] for item in xrange(sorted(a.keys(), reverse=True)[0] +1)]
print ' >> [2] defaultdict out ->', a.items()
print ' >> [3] liste out ->', b
print ' >> ------------------'
# 2. Versuch
a = defaultdict(int)
a[2] = 20
a[4] = 40
a[9] = 90
print ' >> [4] defaultdict in ->', a.items()
b = [0 for item in xrange(sorted(a.keys(), reverse=True)[0] +1)]
print ' >> [5] liste out ->', b
for index, value in a.iteritems():
b[index] = value
print ' >> [6] defaultdict out ->', a.items()
print ' >> [7] liste out ->', b
# >> [1] defaultdict in -> [(9, 90), (2, 20), (4, 40)]
# >> [2] defaultdict out -> [(0, 0), (1, 0), (2, 20), (3, 0), (4, 40), (5, 0), (6, 0), (7, 0), (8, 0), (9, 90)]
# >> [3] liste out -> [0, 0, 20, 0, 40, 0, 0, 0, 0, 90]
# >> ------------------
# >> [4] defaultdict in -> [(9, 90), (2, 20), (4, 40)]
# >> [5] liste out -> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# >> [6] defaultdict out -> [(9, 90), (2, 20), (4, 40)]
# >> [7] liste out -> [0, 0, 20, 0, 40, 0, 0, 0, 0, 90]
>> defaultdict in : [(9, 90), (2, 20), (4, 40)]
>> defaultdict out : [(0, 0), (1, 0), (2, 20), (3, 0), (4, 40), (5, 0), (6, 0), (7, 0), (8, 0), (9, 90)].
Beim zweiten Versuch erhalte ich ebenfalls das gewünschte List-Objekt, ohne jedliche Veränderungen des defaultdict Objektes.
Kann ich wie beim ersten Versuch das veränderte defaultdict Objekt einfach ignorieren, oder handele ich mir irgend welche Nachteile dabei ein ?
Bitte berücksichtigt, das dies hier nur ein Beispiel ist und ein defaultdict(int) einige Hundert Keys enthalten kann und wenn dann alle fehlenden Keys mit einem '0-Value' ergänzt werden, das defaultdict um ein vielfaches größer werden kann.
Vielen Dank für Eure Hilfestellungen.