2014-06-05 2 views
2

REST를 통해 인벤토리 데이터를 수집하는 스크립트를 작성 중입니다. 그런 다음 필자의 스크립트에서 다른 곳에서 사용할 수있는 목록과 두 개의 사전을 만들기 위해 필터링하려고합니다. 이에서 예를 들어Python의 JSON 데이터에서 목록 및 사전 만들기

: 나는 키

dict1 = {"managementIpAddress": "hostname"} 
dict2 = {"managementIpAddress": "platformId"} 

방법으로 IP 주소를 사용하여 managementIpAddress

그리고이 사전에서 IP 주소 목록을 생성 할 "platformId" = "C897VA-K9"

{'version': '0.0' 
'response': [{'chassisType': 'C800', 
      'family': 'C897VA-K9', 
      'hostname': 'chaney-xtr', 
      'imageName': 'c800-universalk9-mz.SPA.154-2.T.bin', 
      'interfaceCount': '10', 
      'lastUpdated': '2014-06-03 01:39:19.855491-07', 
      'lineCardId': 'e5bddd56-2194-4b83-8ae5-597893800051', 
      'macAddress': '88:5A:92:A4:E7:C8', 
      'managementIpAddress': '192.168.2.1', 
      'memorySize': '988236K/60339K', 
      'networkDeviceId': 'e15789bd-47df-4df9-809f-daf81d15ff2a', 
      'numUpdates': 1, 
      'platformId': 'C897VA-K9', 
      'portRange': 'ATM0, ATM0.1, BRI0, BRI0:1-2, Dialer1, Ethernet0, GigabitEthernet0-8, LISP0, Loopback0-1, NVI0, Virtual-Access1, Virtual-Template1, Vlan1', 
      'role': 'Unknown', 
      'roleSource': 'auto', 
      'serialNumber': 'FGL175124DX', 
      'softwareVersion': '15.4(2)T', 
      'type': 'UNKNOWN', 
      'upTime': '2 weeks, 3 days, 18 hours, 2 minutes', 
      'vendor': 'Cisco'}, 
      {'chassisType': 'C800', 
      'family': 'C897VA-K9', 
      'hostname': 'chaney-xtr2', 
      'imageName': 'c800-universalk9-mz.SPA.154-2.T.bin', 
      'interfaceCount': '10', 
      'lastUpdated': '2014-06-03 01:39:19.855491-07', 
      'lineCardId': 'e5bddd56-2194-4b83-8ae5-597893800051', 
      'macAddress': '88:5A:92:A4:E7:C8', 
      'managementIpAddress': '192.168.2.2', 
      'memorySize': '988236K/60339K', 
      'networkDeviceId': 'e15789bd-47df-4df9-809f-daf81d15ff2a', 
      'numUpdates': 1, 
      'platformId': 'C897VA-K9', 
      'portRange': 'ATM0, ATM0.1, BRI0, BRI0:1-2, Dialer1, Ethernet0, GigabitEthernet0-8, LISP0, Loopback0-1, NVI0, Virtual-Access1, Virtual-Template1, Vlan1', 
      'role': 'Unknown', 
      'roleSource': 'auto', 
      'serialNumber': 'XGL175124D3', 
      'softwareVersion': '15.4(2)T', 
      'type': 'UNKNOWN', 
      'upTime': '2 weeks, 3 days, 18 hours, 2 minutes', 
      'vendor': 'Cisco'}], 
} 

이러는거야?

종류와 관련,

라이언

+4

은 무엇 접근이 시도 사전인가를 gengerate하는 평가 후면 문을 사용하여? – cwallenpoole

+0

파이썬 워드 프로세서를 사용해 보셨나요? https://docs.python.org/2/library/json.html –

+0

@cwallenpoole이 언급했듯이, 지금까지 해보았던 것을 공유해야하며, 특히 그것에 붙어있는 곳을 공유해야합니다. – dano

답변

1
from_this = {"version":"0.0","response":[{"macAddress":"88:5A:92:A4:E7:C8","networkDeviceId":"e15789bd-47df-4df9-809f-daf81d15ff2a","lineCardId":"e5bddd56-2194-4b83-8ae5-597893800051","lastUpdated":"2014-06-03 01:39:19.855491-07","platformId":"C897VA-K9","vendor":"Cisco","numUpdates":1,"interfaceCount":"10","portRange":"ATM0, ATM0.1, BRI0, BRI0:1-2, Dialer1, Ethernet0, GigabitEthernet0-8, LISP0, Loopback0-1, NVI0, Virtual-Access1, Virtual-Template1, Vlan1","roleSource":"auto","chassisType":"C800","softwareVersion":"15.4(2)T","upTime":"2 weeks, 3 days, 18 hours, 2 minutes","imageName":"c800-universalk9-mz.SPA.154-2.T.bin","memorySize":"988236K/60339K","managementIpAddress":"192.168.2.1","family":"C897VA-K9","type":"UNKNOWN","serialNumber":"FGL175124DX","role":"Unknown","hostname":"chaney-xtr"}, {"macAddress":"88:5A:92:A4:E7:C8","networkDeviceId":"e15789bd-47df-4df9-809f-daf81d15ff2a","lineCardId":"e5bddd56-2194-4b83-8ae5-597893800051","lastUpdated":"2014-06-03 01:39:19.855491-07","platformId":"C897VA-K9","vendor":"Cisco","numUpdates":1,"interfaceCount":"10","portRange":"ATM0, ATM0.1, BRI0, BRI0:1-2, Dialer1, Ethernet0, GigabitEthernet0-8, LISP0, Loopback0-1, NVI0, Virtual-Access1, Virtual-Template1, Vlan1","roleSource":"auto","chassisType":"C800","softwareVersion":"15.4(2)T","upTime":"2 weeks, 3 days, 18 hours, 2 minutes","imageName":"c800-universalk9-mz.SPA.154-2.T.bin","memorySize":"988236K/60339K","managementIpAddress":"192.168.2.2","family":"C897VA-K9","type":"UNKNOWN","serialNumber":"XGL175124D3","role":"Unknown","hostname":"chaney-xtr2"}]} 

dict1 = {} 
dict2 = {} 

for response_item in from_this['response']: 
    dict1[response_item['managementIpAddress']] = response_item['hostname'] 
    dict2[response_item['managementIpAddress']] = response_item['platformId'] 

출력은 다음과 같습니다 : 이것이 당신이 찾고 있던 무슨 경우

In[189]: dict1 
Out[187]: {'192.168.2.1': 'chaney-xtr', '192.168.2.2': 'chaney-xtr2'} 
In[190]: dict2 
Out[188]: {'192.168.2.1': 'C897VA-K9', '192.168.2.2': 'C897VA-K9'} 

, 당신은 어떤 질문이 있으면 알려 주시기. 당신은 JSON 데이터를 분석 할 수

+0

와우! 그것은 빨랐다. 감사 Krishan 그게 아주 도움이됩니다. 질문에 대한 답변을 구하기 위해 필자는 파이썬 문서를 찾기가 어려웠지만이 사이트에서이 답변을 찾았습니다.이 사이트도 매우 도움이되었습니다. http://stackoverflow.com/questions/23024477/retrieving-items-from-a -dictionary-data-type-json-request-created. – user3709511

0

, 다음 몇 가지 경우와 다른 경우 데이터가 필요한지 여부를 판단하기 위해 추가 한 다음

+0

확장하여 예제 코드를 제공하면 대답이 명확 해집니다. – Josh