Python: Holen Sie sich alle Werte im Zusammenhang mit den key in ein dictionary, wo die Werte kann eine Liste oder ein einzelnes Element

Ich bin auf der Suche, um alle Werte, die mit einem Schlüssel in einem dictionary. Manchmal ist der Schlüssel besitzt ein Wörterbuch einzelne, manchmal eine Liste von Wörterbüchern.

a = {
  'shelf':{
    'book':{'title':'the catcher in the rye', 'author':'j d salinger'}
  }
}  

b = {
  'shelf':[
    {'book':{'title':'kafka on the shore', 'author':'haruki murakami'}},
    {'book':{'title':'atomised', 'author':'michel houellebecq'}}
  ]    
}

Hier ist meine Methode zum Lesen der Titel von jedem Buch auf dem Regal.

def print_books(d):
  if(len(d['shelf']) == 1):
    print d['shelf']['book']['title']
  else:
    for book in d['shelf']:
      print book['book']['title']

Funktioniert es, aber nicht ordentlich Aussehen oder pythonic. Die for-Schleife kann nicht auf die einzelnen Wert-Fall, daher auch die if/else.

Können Sie verbessern?

  • Warum oh warum sind nicht Ihre Daten, Strukturen, konsequente...
  • Drop der Mitte dict, die sowieso nur einen Schlüssel? Noch würde ein "Regal" besonders relevant mit nur einem Artikel. Das Zen of Python: "Besondere Fälle sind nicht bedeutend genug, um die Regeln zu brechen."
  • haha, geht es mir nicht. Die Daten stammen wie diese von einem Yahoo-Dienst.
InformationsquelleAutor Ollie Glass | 2011-04-13
Schreibe einen Kommentar