簡體   English   中英

python循環遍歷字典中字典中的列表

[英]python loop through list in dictionary inside one dictionary

我有一本字典,其中包含以下字典列表:

output = { "Facebook": [
    { "prefix": "5.45.32.0\/22", "exact": true },
    { "prefix": "185.160.58.0\/23", "exact": false, "greater-equal": 24, "less-equal": 24 },
    { "prefix": "5.57.248.0\/21", "exact": true },
    { "prefix": "5.206.208.0\/20", "exact": true },
    { "prefix": "185.54.94.0\/23", "exact": false, "greater-equal": 24, "less-equal": 24 },
    { "prefix": "31.193.104.0\/21", "exact": true },
    { "prefix": "213.233.192.0\/18", "exact": true },
    { "prefix": "217.26.96.0\/20", "exact": true }
] }

for line in output:
    print(line['prefix")

我想遍歷這個 en 打印每一行,如下所示:

5.45.32.0, True
185.160.58.0, 24

因此,例如從第一項中刪除\\/22有人可以幫助我了解如何使其工作嗎?

output = { "Facebook": [
    { "prefix": "5.45.32.0\/22", "exact": 'true' },
    { "prefix": "185.160.58.0\/23", "exact": 'false', "greater-equal": 24, "less-equal": 24 },
    { "prefix": "5.57.248.0\/21", "exact": 'true' },
    { "prefix": "5.206.208.0\/20", "exact": 'true' },
    { "prefix": "185.54.94.0\/23", "exact": 'false', "greater-equal": 24, "less-equal": 24 },
    { "prefix": "31.193.104.0\/21", "exact": 'true' },
    { "prefix": "213.233.192.0\/18", "exact": 'true' },
    { "prefix": "217.26.96.0\/20", "exact": 'true'}
] }

for item in output['Facebook']:
    if item['exact'] == 'true':
        print ("{}, {}".format(item['prefix'].split('\/')[0], item['exact']))
    else:
        print ("{}, {}".format(item['prefix'].split('\/')[0], item['greater-equal']))

輸出:

5.45.32.0, true
185.160.58.0, 24
5.57.248.0, true
5.206.208.0, true
185.54.94.0, 24
31.193.104.0, true
213.233.192.0, true
217.26.96.0, true

或者:

注意:區別在於您是否將使用'true' 之類的字符串或 True 之類的布爾值

output = { "Facebook": [
    { "prefix": "5.45.32.0\/22", "exact": True },
    { "prefix": "185.160.58.0\/23", "exact": False, "greater-equal": 24, "less-equal": 24 },
    { "prefix": "5.57.248.0\/21", "exact": True },
    { "prefix": "5.206.208.0\/20", "exact": True },
    { "prefix": "185.54.94.0\/23", "exact": False, "greater-equal": 24, "less-equal": 24 },
    { "prefix": "31.193.104.0\/21", "exact": True },
    { "prefix": "213.233.192.0\/18", "exact": True },
    { "prefix": "217.26.96.0\/20", "exact": True }
] }


for item in output['Facebook']:
    if item['exact'] == True:
        print ("{}, {}".format(item['prefix'].split('\/')[0], item['exact']))
    else:
        print ("{}, {}".format(item['prefix'].split('\/')[0], item['greater-equal']))

這應該有效。

output = { "Facebook": [
    { "prefix": "5.45.32.0\/22", "exact": True },
    { "prefix": "185.160.58.0\/23", "exact": False, "greater-equal": 24, "less-equal": 24 },
    { "prefix": "5.57.248.0\/21", "exact": True },
    { "prefix": "5.206.208.0\/20", "exact": True },
    { "prefix": "185.54.94.0\/23", "exact": False, "greater-equal": 24, "less-equal": 24 },
    { "prefix": "31.193.104.0\/21", "exact": True },
    { "prefix": "213.233.192.0\/18", "exact": True },
    { "prefix": "217.26.96.0\/20", "exact": True }
] }

#Iterate through all dictionaries
for dct in output['Facebook']:

    #Get value of prefix and exact
    prefix = dct['prefix'].split('\/')[0]
    exact = dct['exact']

    #If exact is present, use it, 
    if exact:
        print('{} {}'.format(prefix, exact))
    #Else use greater-equal key
    else:
        gr_eq = dct.get('greater-equal')
        print('{} {}'.format(prefix, gr_eq))

輸出將是

5.45.32.0 True
185.160.58.0 24
5.57.248.0 True
5.206.208.0 True
185.54.94.0 24
31.193.104.0 True
213.233.192.0 True
217.26.96.0 True

另請注意, "exact": true會拋出語法錯誤,而是執行"exact": True因為布爾值由True而不是true

output = { "Facebook": [
    { "prefix": "5.45.32.0\/22", "exact": True },
    { "prefix": "185.160.58.0\/23", "exact": False, "greater-equal": 24, "less-equal": 24 },
    { "prefix": "5.57.248.0\/21", "exact": True },
    { "prefix": "5.206.208.0\/20", "exact": True },
    { "prefix": "185.54.94.0\/23", "exact": False, "greater-equal": 24, "less-equal": 24 },
    { "prefix": "31.193.104.0\/21", "exact": True },
    { "prefix": "213.233.192.0\/18", "exact": True },
    { "prefix": "217.26.96.0\/20", "exact": True }
] }

facebook_apis = output['Facebook']

for facebook_api in facebook_apis:
    # print(facebook_api['prefix'])
    try:
        print(str(facebook_api['prefix'].split("\/")[0]) + ', ' + str(facebook_api['greater-equal']))
    except:
        print(str(facebook_api['prefix'].split("\/")[0]) + ", " + str(facebook_api["exact"]))

輸出將是:

5.45.32.0, True
185.160.58.0, 24
5.57.248.0, True
5.206.208.0, True
185.54.94.0, 24
31.193.104.0, True
213.233.192.0, True
217.26.96.0, True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM