Mehrdimensionales Array abfragen

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.
trumm
User
Beiträge: 14
Registriert: Freitag 4. September 2015, 08:06

Das kommt das der snmp_Info Funktion die über/von Check_mk aufgerufen wird. Die macht den snmpwalk zum switch.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich glaube, Hyperion will wissen, wie die eigentliche Struktur zustande kommt. Also nicht, wie du an die fertige Struktur kommst, sondern wo sie zusammengesetzt wird.

Ist das ein Skript, welches du verändern könntest? Ist es ein bestimmter Befehl, den du möglicherweise anders konfigurieren kannst? Oder ist die Struktur fest eingestellt?

Weil: Die Struktur ist halt recht unhandlich. Wenn man das Format dieser Struktur schon beim Erstellen beeinflussen könnte, dann würde man möglicherweise weniger umständlichen Python-Code schreiben müssen.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

@trumm Ich weiß ja nicht, wozu Du das array brauchst, aber wenn es Dir darauf ankommst auf den hinteren Eintrag zu filtern, würde ich ein Dictionary nehmen, Du kannst es ja auch aus Deinem Array erzeugen:

Code: Alles auswählen

Dictionary = {}

def fill_dictionary(arr_entry):
   entry = arr_entry[2]
   index = arr_entry[0]
   name = arr_entry[1]
   if entry not in Dictionary: Dictionary[entry] = {}
   Dictionary[entry][index] = name

fill_dictionary( ['6', 'Tunnel2','131'])
trumm
User
Beiträge: 14
Registriert: Freitag 4. September 2015, 08:06

Guten Morgen,

ich muss nur wissen ob der zweite Eintrag vorhanden ist. Dies bedeutet ob auf einem Cisco Device ein VPN Tunnel steht, oder eben down ist.
Aktuell sieht das auch ganz gut aus. Ich hab noch eine andere Baustelle da muss ich mal gucken, warum er den letzten snmp-walk "verschluckt"

Danke für die Info.
trumm
User
Beiträge: 14
Registriert: Freitag 4. September 2015, 08:06

Ich möchte mich nochmals bei allen die mir geholfen haben ganz herzlich bedanken.
Heute Vormittag habe ich meinen ersten check_mk check mit Python erfolgreich umsetzten können.

Und während ich so voller Freude war, bat man mich, diesen gleich zu erweitern und da kommt wieder mein Listen Problem.
Jetzt habe ich der Listen und muss ein andere andere hängen und wiederrum eine daraus machen. Wie kann ich zwei "zusammensetzten"

Ein Bsp.

Code: Alles auswählen

liste = [
			[
				[1, 1],[2 ,2],[3, 3],[4, 4]
			],
			[
				['Text'],['Wort'],[''],['Hilfe']
			]
		]
Wie kann ich die Zahlen-Liste in Eins mit dem jeweiligen Wort aus liste zwei ergänzen, oder eine Große daraus machen ?
Das es so aussieht.

Code: Alles auswählen

[1, 1, Text], [2, 2, Wort],[3, 3, ''], [4, 4, Hilfe]
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

Code: Alles auswählen

>>> map(operator.add, *liste)
[[1, 1, 'Text'], [2, 2, 'Wort'], [3, 3, ''], [4, 4, 'Hilfe']]
trumm
User
Beiträge: 14
Registriert: Freitag 4. September 2015, 08:06

Ja coole Sache genauso möchte ich das Ergebnis haben. doch leider funktioniert das irgendwie nicht. ich bekomme einen Traceback (most recent call last)
Ich war gerade mit einer for- Schleife etwas am versuchen. :(
Benutzeravatar
sparrow
User
Beiträge: 4144
Registriert: Freitag 17. April 2009, 10:28

Wenn du schon einen Fehler bekommst, dann solltest du den entsprechenden Quellcode und die Fehlermeldung hier posten. Beides so wie du es ausführst - im Zweifelsfall als minimales Beispiel.
Sonst können wir nur raten.
trumm
User
Beiträge: 14
Registriert: Freitag 4. September 2015, 08:06

Code: Alles auswählen

Import operator
half schon mal die Fehlermeldung zu verändern :)

Code: Alles auswählen

>>> import pprint
>>> import operator
>>> liste = [[[1, 1],[2 ,2],[3, 3],[4, 4]],[['Text'],['Wort'],[''],['Hilfe']]]
>>> b= map(operator.add, *liste)
>>> pprint.pprint(b)
<map object at 0x0000000002333208>
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

trumm hat geschrieben:leider funktioniert das irgendwie nicht :(
Wie man Fragen richtig stellt
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
trumm
User
Beiträge: 14
Registriert: Freitag 4. September 2015, 08:06

Ich habs :)

Code: Alles auswählen

import pprint
import operator
liste = [[[1, 1],[2 ,2],[3, 3],[4, 4]],[['Text'],['Wort'],[''],['Hilfe']]]
b = tuple(map(operator.add, *liste))
pprint.pprint(b)

>>>([1, 1, 'Text'], [2, 2, 'Wort'], [3, 3, ''], [4, 4, 'Hilfe'])
Dank für das auf den richtigen Weg bringen :)
Antworten