2017-05-29 5 views
-1

を含むリスト内の各dictinaryから2つの値を抽出I次のJSONがありますPython-は、2つのリスト

{ 
"error": null, 
"page": "1", 
"per_page": "1000", 
"results": [ 
    { 
     "cves": [ 
      { 
       "cve_id": "CVE-2016-1583", 
       "href": "https://www.redhat.com/security/data/cve/CVE-2016-1583.html" 
      }, 
      { 
       "cve_id": "CVE-2016-5195", 
       "href": "https://www.redhat.com/security/data/cve/CVE-2016-5195.html" 
      } 
     ], 
     "description": "The kernel packages contain the Linux kernel, the core of any Linux operating\nsystem.\n\nSecurity Fix(es):\n\n* A race condition was With this update, a set of patches has been applied that fix\nthese problems. As a result, the time stamps of GFS2 files are now handled\ncorrectly. (BZ#1374861)", 
     "errata_id": "RHSA-2016:2124", 
     "hosts_applicable_count": 0, 
     "hosts_available_count": 0, 
     "id": "81ee41e6-2a3a-4475-a88e-088dee956787", 
     "issued": "2016-10-28", 
     "packages": [ 
      "kernel-2.6.18-416.el5.i686", 

     ], 
     "reboot_suggested": true, 
     "severity": "Important", 
     "solution": "For details on how to apply this update, which includes the changes described in\nthis advisory, refer to:\n\nhttps://access.redhat.com/articles/11258\n\nThe system must be rebooted for this update to take effect.", 
     "summary": "An update for kernel is now available for Red Hat Enterprise Linux 5.\n\nRed Hat Product Security 

は、私がerrata_idとサマリー(ちょうどRHELバージョン) の値を抽出したいです私は辞書改めて、すなわちとして置きたい:RHSA-2016:2098:のRed Hat Enterprise Linux 5

私はerratsのリストを抽出することができた、それだけではないリストとして、辞書のように要約すると:

ERRATA_ID_LIST = [] 
for errata_ids in erratas_by_cve_dic['results']: 
    ERRATA_ID = errata_ids['errata_id'] 
    ERRATA_ID_LIST.append(ERRATA_ID 
+0

あなたはどんな種類の出力をお探しですか?ここで質問しようとしていることを理解できません –

+1

jsonあなたはここに投稿されたjsonは有効ではありません。それを確認してください –

答えて

1

私はあなたが行うことができますので、{ID、要約}で辞書を作成したい理解していれば:

ERRATA_ID_DICT = {} 
for element in erratas_by_cve_dic['results']: 
    ERRATA_ID_DICT[element['errata_id']] = element['summary'] 
0

2の可能なアプローチがあります:あなたがやったように

1)ループに使用しては、しかし、辞書にデータを置く:

errata = {} 
for errata_ids in erratas_by_cve_dic['results']: 
    errata_id = errata_ids['errata_id'] 
    summary = errata_ids['summary'] 
    errata[errata_id] = summary 

や、短いが、おそらくあまり明確:

errata = {} 
for errata_ids in erratas_by_cve_dic['results']: 
    errata[errata_ids['errata_id']] = errata_ids['summary'] 
辞書内包表記を用いて10

2):それはないだけ短くするだけでなく、(すなわち、より神託であるよう

errata = { errata_ids['errata_id']: errata_ids['summary'] for errata_ids in erratas_by_cve_dic['results'] } 

私は、第二の方法より好きです。 Pythonイディオムを使用して)。

関連する問題