2017-07-20 1 views
1

Meine Python Dictionary-Struktur ist wie folgt:Python wie .values ​​zu tun() values ​​() eines Wörterbuchs der Wörterbücher von Listen

ips[host][ip] 

jede Zeile von ips [host] [IP] wie folgt aussieht :

[host, ip, network, mask, broadcast, mac, gateway, ip_ver, status] 

So werden die Schlüssel auch in den Zeilen gespeichert. Dieses Wörterbuch wird stark verarbeitet und auch für andere schwerere Verarbeitung verwendet. Sobald dieses Wörterbuch als endgültig angesehen wird, muss ich die Zeilen an eine Datenbank ausgeben.

Die Ausgabefunktion wird durch Ausgabeoptimierung und andere Programmierfunktionen wie Konfliktbehandlung (z. B. was automatisch bei einem Primärschlüsselkonflikt geschieht) kompliziert. Darüber hinaus wird die Ausgabefunktion für viele andere Wörterbücher/Tabellen verwendet.

Die Ausgabefunktion erfordert eine Liste, kein Wörterbuch (weshalb die Schlüssel auch im ips-Wörterbuch enthalten sind). Alle anderen Wörterbüchern I an die Ausgabefunktion der Arbeit senden, indem Sie diese, da sie Wörterbücher von Listen sind:

locations = am_output.loc.values() 

Dies ist jedoch ips Wörterbuch ein Wörterbuch der Wörterbücher von Listen ist. Ich dachte, das würde funktionieren:

ips = am_output.ips.values().values() 

Aber ich bekomme die Fehlermeldung:

AttributeError: 'dict_values' object has no attribute 'values' 
+0

Es gibt 4 Millionen Datensätze wären riesig. Die ersten beiden Codeabschnitte oben zeigen das Format. – gunslingor

Antwort

2

Eine einfache Liste Verständnis tun würde:

[y for x in ips.values() for y in x.values()] 

Demo:

>>> ips = {'a' : {1: 2, 3: 4}, 
...  'b': {'a': 'b', 'c': 'd'}} 
>>> [y for x in ips.values() for y in x.values()] 
[2, 4, 'b', 'd']