Python: Erstellen Sie Unterwörterbuch aus dem Wörterbuch

Ich habe ein PythonWörterbuch, sagen wir

dic = {"aa": 1, "bb": 2, "cc": 3, "dd": 4, "ee": 5, "ff": 6, "gg": 7, "hh": 8, "ii": 9} 

Ich möchte eine Liste von Unter-Wörterbuch-Elementen mit der Länge 3 wie machen

 dic = [{"aa": 1, "bb": 2, "cc": 3}, {"dd": 4, "ee": 5, "ff": 6}, {"gg": 7, "hh": 8, "ii": 9}] 

Ich kam mit folgendem Code:

 dic = {"aa": 1, "bb": 2, "cc": 3, "dd": 4, "ee": 5, "ff": 6, "gg": 7, "hh": 8, "ii": 9} i = 0 dc = {} for k, v in dic.items(): if i==0 or i==3 or i==6: dc = {} dc[k] = v if i==2 or i==5 or i==8: print dc i = i + 1 

Ausgabe:

 {'aa': 1, 'ee': 5, 'hh': 8} {'cc': 3, 'bb': 2, 'ff': 6} {'ii': 9, 'gg': 7, 'dd': 4} 

Irgendeine pythonische Art, das gleiche Zeug zu machen?

3 Solutions collect form web for “Python: Erstellen Sie Unterwörterbuch aus dem Wörterbuch”

Du kannst es so ausprobieren: Zuerst bekommst du die Items aus dem Wörterbuch als eine Liste von Key-Value-Paaren. Die Einträge in einem Wörterbuch sind ungeordnet, also wenn Sie möchten, dass die Chunks eine bestimmte Reihenfolge haben, sortieren Sie die Elemente, zB per Schlüssel. Jetzt können Sie ein Listenverständnis verwenden, indem Sie Stücke von 3 aus der Liste der Artikel schneiden und sie in Wörterbücher zurückdrehen.

 >>> items = sorted(dic.items()) >>> [dict(items[i:i+3]) for i in range(0, len(items), 3)] [{'aa': 1, 'bb': 2, 'cc': 3}, {'dd': 4, 'ee': 5, 'ff': 6}, {'gg': 7, 'hh': 8, 'ii': 9}] 
  new_dic_list = [k for k in dic.items()] for i in range(0,len(new_dic_list),3): dc=dict(new_dic_list[i:i+3]) 

Funktioniert nur für Vielfache von 3. Sie können Modul (%) verwenden, um Ihre Methode auch direkt zu vereinfachen

Getestet auf Python 2.7.12:

 def parts(l, n): for i in xrange(0, len(l), n): yield l[i:i + n] somedict = { "aa": 1, "bb": 2, "cc": 3, "dd": 4, "ee": 5, "ff": 6, "gg": 7, "hh": 8, "ii": 9, } keys = somedict.keys() keys.sort() for subkeys in parts(keys, 3): print({k:somedict[k] for k in subkeys}) 
Python ist die beste Programmiersprache der Welt.