Ich wurde ein Python-Skript-Helper für mein Simulationsprojekt gegeben. Ich druckte eine Liste print event.connection.features.ports
die wie folgt aussieht:Entpacken Sie einen Wert der unbekannten Liste
[port_no: 65534
hw_addr: aa:20:20:40:f8:48
name: s9
config: 1
state: 1
curr: 0
advertised: 0
supported: 0
peer: 0
, port_no: 1
hw_addr: 36:7c:47:6d:ba:8c
name: s9-eth1
config: 0
state: 0
curr: 192
advertised: 0
supported: 0
peer: 0
]
Die Idee dabei ist, dass diese Liste eine seltsame Liste sieht für mich !! Ich weiß nicht einmal, wie man einen bestimmten Wert basierend auf einem Index extrahiert, da die Indizes hier nicht klar sind (ich nehme an, dass es hier nur zwei Indizes gibt, da Komma hier das Trennzeichen sein könnte). Mein gewünschter Wert zu extrahieren ist hw_addr
basierend auf gegeben port_no
. Zum Beispiel, wenn ich hw_addr
von port 1
möchte, habe ich etwas wie port_no[1][1]
versucht, aber das funktioniert nicht. Ich habe eine Schleife zu Schleife über diese Liste wie die folgenden:
for i in event.connection.features.ports:
if i.port_no == 1:
print i.port_no[1][1]
Diese Schleife gibt diesen Fehler!
File "/home/ahmad/pox/pox/Latency_Monitor.py", line 57, in _handle_ConnectionUp
print m.port_no[1][1]
TypeError: 'int' object has no attribute '__getitem__'
Bitte, kann jemand einen Tipp geben? Danke
Es sieht für mich so aus, weil jemand die '__repr__' Funktion auf den Elementen in der Liste definiert hat. Können Sie den Fehler angeben? –
Ja! Ich werde den Beitrag mit dem Fehler aktualisieren. Danke Jungs – Don
Die Überprüfung von 'type (i.port_no)' und 'dir (i)' kann helfen, die tatsächliche Struktur der Liste zu verstehen. – DyZ