두 개의 스위치에서 다음 두 가지 사전 목록을 소진했습니다. 핵심 스위치의 첫 번째 스위치, 액세스 스위치 'switch1'의 두 번째 스위치입니다. 이 네트워크에 대한 더 많은 통찰력을 얻기 위해이 두 사전 목록을 참조하기를 원합니다.
core_table = [
{'ip': '172.17.2.1', 'mac': 'b8:27:eb:a3:24:a0', 'host': 'laptop', 'if': 'switch1'},
{'ip': '172.17.6.3', 'mac': '0c:89:10:88:20:3f', 'host': 'desktop', 'if': 'switch3'},
{'ip': '172.17.7.2', 'mac': 'b8:27:eb:a3:24:a3', 'host': 'server', 'if': 'switch1'},
{'ip': '172.17.6.2', 'mac': '0c:89:10:88:20:3f', 'host': 'storage', 'if': 'switch2'}
]
switch1_table = [
{'mac': '00:01:02:71:44:59', 'if': 'ge-1/0/6.0'},
{'mac': '00:06:73:00:c9:7a', 'if': 'ge-3/0/2.0'},
{'mac': 'b8:27:eb:a3:24:a0', 'if': 'ge-5/0/27.0'},
{'mac': '00:09:0f:09:1d:06', 'if': 'ae0.0'},
{'mac': '00:0a:07:05:1f:a4', 'if': 'ge-2/0/15.0'},
{'mac': '00:0b:4f:5d:09:ae', 'if': 'ge-2/0/19.0'},
{'mac': '00:0b:4f:d3:7b:3f', 'if': 'ge-1/0/18.0'},
{'mac': '00:0c:29:49:64:12', 'if': 'ae0.0'},
{'mac': '00:0e:ec:e8:18:50', 'if': 'ae0.0'},
{'mac': 'b8:27:eb:a3:24:a3', 'if': 'ge-0/0/44.0'},
{'mac': '00:15:17:93:aa:01', 'if': 'ae0.0'}
]
나는 core_table의 모든 MAC 주소를 요약 할 수 있습니다
for x in [m['mac'] for m in core_table]:
print x
print m
나는 인쇄 할 경우 나는이 목록에 마지막 사전을 볼 수 있어요. access_table에서
와 마찬가지로 모든 인터페이스 : Python - accessing values nested within dictionaries 내가 필요에 가까운 그러나 이것은 사전의 하나의 목록에서 항목 사이의 관계에 의존 :
for y in [n['if'] for n in ex_table]:
print y
print n
은이 문서가 보인다. 그렇지 않다.
macaddress를 switch1_table과 일치시키면서 core_table을 반복하는 방법을 찾을 수 없습니다. core_table의 mac 주소가 swicth1_table의 mac 주소와 일치하면 core_table의 해당 행과 access_table의 'if'값을 인쇄하고 싶습니다. 내가 달성하고 싶습니다 : 내가 함께 왔어요
{'ip': '172.17.2.1', 'mac': 'b8:27:eb:a3:24:a0', 'host': 'laptop', 'if': 'switch1' 'port': 'ge-5/0/27.0'},
{'ip': '172.17.7.2', 'mac': 'b8:27:eb:a3:24:a3', 'host': 'server', 'if': 'switch1' 'port': 'ge-0/0/44.0'}
: (감사 : Pythonic Way to Compare Values in Two Lists of Dictionaries)
match = [x['mac'] for x in core_table if 'switch1' in x['if']]
print [x for x in switch1_table if x['mac'] in match]
이 나를 점점 가까이하지만 지금 내가 할 수있는 방법을 찾을 수있다 호스트 및 ip 데이터를 추가하십시오.
모든 의견을 환영합니다.
당신은 그것의 정의 –
패트릭에'switch1_table'을 맞춤법이 틀린 것, 내가 그랬어. 고맙습니다. 나는 그것을 바꿨다. – sandmouse
누군가 나에게 투표를 설명해 주시겠습니까? 파이썬에서 초보자 일뿐만 아니라 StackExchange 사용자이기도합니다. – sandmouse