bin erst vor Kurzem auf namedtuple von collections gestoßen, was ich vorher nicht kannte.
Bisher habe ich meine Namen für Listen, so erstellt und verwendet.
In diesem Beispiel, verwende ich extra nur Code (ohne Funktionen usw...), also bitte nicht dran stören!

Code: Alles auswählen
listname2names = {
'kundenauswahl' : {
'kunde' : 0,
'filiale' : 1,
'namen' : 2,
'zusatz' : 3,
'street' : 4,
'plz' : 5,
'ort' : 6
},
'kunden' : {
'kunde' : 0,
'filiale' : 1,
'kundendefinition' : 2,
'anrede1' : 3,
'namen' : 4,
'zusatz' : 5,
'anrede2' : 6,
'namen2' : 7,
'info_namen' : 8,
'street' : 9,
'plz' : 10,
'ort' : 11,
'entfernung' : 12,
'homepage' : 13,
'ust_nr' : 14,
'steuer_nr' : 15,
'handelsregister' : 16,
'handelsregister_nr' : 17,
'kundenzeichen' : 18,
'datum' : 19,
}
}
Hier ein Beispiel, wie ich obige Namenslisten einsetze.
Code: Alles auswählen
pool = {
('047110', '') : ('047110', '', '0', '', 'Test GmbH', '', '',
'Test-Allee 22', '012345', 'Testhausen', '', '', '', '', '', '',
'', '', '', '2014.12.04'),
('088112', '') : ('088112', '', '0', '', 'Maier GmbH', '', '',
'Abc-Allee 22', '098765', 'Cuxhausen', '', '', '', '', '', '',
'', '', '', '2014.12.04')}
listname = 'kunden'
list_check = listname2names.get(listname)
namen = list_check.get('namen')
for key in pool:
b = pool[key]
print(b[namen])
Hier verwende ich die gleiche obige Namensliste, was wenn man nur mit namedtuple arbeitet, noch wesentlich einfacher aussehen würde.
Hier speise ich alle Listennamen in ein Dictionary ein und weise namedtuple zu.
Code: Alles auswählen
nd = dict()
for listnames in listname2names:
pos2name = dict([(listname2names[listnames][names], names)
for names in list(listname2names[listnames].keys())])
names = [pos2name[i] for i in sorted(pos2name)]
nd[listnames] = namedtuple(listnames, '{}'.format(' '.join(names)))
pool = {
('047110', '') : ('047110', '', '0', '', 'Test GmbH', '', '',
'Test-Allee 22', '012345', 'Testhausen', '', '', '', '', '', '',
'', '', '', '2014.12.04'),
('088112', '') : ('088112', '', '0', '', 'Maier GmbH', '', '',
'Abc-Allee 22', '098765', 'Cuxhausen', '', '', '', '', '', '',
'', '', '', '2014.12.04')}
listname = 'kunden'
var = 'listname = listname'
exec(var)
listname = nd.get(listname)
for key in pool:
b = pool[key]
x = listname(b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8],
b[9], b[10], b[11], b[12], b[13], b[14], b[15], b[16], b[17],
b[18], b[19])
print(x.namen)
Obwohl ich nur vieleicht den Namen, wie im Beispiel ausgeben möchte.
Also wenn ich eine Liste oder eine Tuple, wie hier verwende
Code: Alles auswählen
x = listname(b)
Gibt es da einen Trick?
Freue mich über Euren Input und Eure Tips!
Grüße Nobuddy