Wie kann ich nested list/dict ermitteln?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
maxwell
User
Beiträge: 69
Registriert: Samstag 11. Juli 2009, 15:36
Wohnort: am Fernsehturm in B.

Hallo @all,

ich stehe total auf dem Schlauch. Wie die headline schon sagt, wie
kann ich auf einer Ebene erkennen ob der value eine nested
liste/dict handelt.

Code: Alles auswählen


a=[{'k1':{'k2':'v2'}}]

#oder:

b=[(1,[1,2])]

Viele Grüße,

Chris


EDIT: Bitte verschieben, habe zuerst die Suche gequält und wohl im falschen Forum geposted...

Edit (BlackJack): Nach "Allgemeine Fragen" verschoben.
be or not to be
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Kommt auf den Kontext an. Welche Datenstrukturen möchtest du den akzeptieren und wofür? Eventuell macht es Sinn einen Algorithmus hinter mehreren Funktionen zu verstecken die unterschiedliche Parameter entgegen nehmen.
maxwell
User
Beiträge: 69
Registriert: Samstag 11. Juli 2009, 15:36
Wohnort: am Fernsehturm in B.

hallo,
der kontext ist der, dass daraus ein dict. erzeugt werden soll.
akzeptiert werden soll als key, val kombi. ein tuple order liste oder
ein reines dict.

Code: Alles auswählen

a=[['k1','v1'],['k2','v2'], ('k3','v3')]

# oder

a=[{'k1':'v1'}]

Sobald der value ein mutable (liste/dict) ist soll ein fehler geworfen werden.

Code: Alles auswählen


error=[['k1', ['kx','vx']], ('k2', {'kx':'vx'}), ('k3', ['kx','kx'])]

# oder

error=[{'k1': {'kx':'vx'}}]

gr. chris
be or not to be
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Code: Alles auswählen

>>> def check_dict(d):
...     for k,v in d.iteritems():
...         if isinstance(v, (list, dict)):
...             raise TypeError("value {0!r} of the dict {1!r} must not be of the type 'list' or 'dict'".format(v, d))
... 
>>> a = [['k1','v1'],['k2','v2'], ('k3','v3')]
>>> check_dict(dict(a))
>>> error = [['k1', ['kx','vx']], ('k2', {'kx':'vx'}), ('k3', ['kx','kx'])]
>>> check_dict(dict(error))
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "<input>", line 4, in check_dict
TypeError: value ['kx', 'kx'] of the dict {'k3': ['kx', 'kx'], 'k2': {'kx': 'vx'}, 'k1': ['kx', 'vx']} must not be of the type 'list' or 'dict'
(benötigt Python2.x)
maxwell
User
Beiträge: 69
Registriert: Samstag 11. Juli 2009, 15:36
Wohnort: am Fernsehturm in B.

Thanks!
ähnliches habe ich bereits nur wusste ich nicht wie mit der liste umgehen wg. Iteritems.
be or not to be
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Was hast du eigentlich vor? Also warum brauchst du das?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Antworten