簡體   English   中英

如何只按字母順序打印嵌套在列表中,字典中的內部詞典的鍵?

[英]How can I print only the keys of inner dictionaries that are nested within a list, within a dict, in alphabetical order?

理想情況下,打印結果將是:

- ainner  
- binner1  
- cinner2  
- dinner3

但是我只設法使用.keys()打印出鍵。

json_dict = {"key": "value", "key1": [{"binner": "inner_value"}, {"ainner1": "inner_value1"}, {"cinner": "inner_value"}, {"dinner1": "inner_value1"}]}

def pprint(a_dict):
    for k in a_dict["key1"]:
        print("-", k.keys())

pprint(json_dict)  

結果是:

- dict_keys(['binner'])
- dict_keys(['ainner1'])    
- dict_keys(['dinner1'])
- dict_keys(['cinner'])

我正在尋找類似的功能: {print("- {}".format(k)) for k in sorted(a_dict)}適用於非嵌套詞典

您要返回的是密鑰的名稱。

json_dict = {"key": "value", "key1": [{"binner": "inner_value"},{"ainner1": "inner_value1"}]}

for i in json_dict['key1']:
    for x in i.keys():
        print (x)

結果是這樣

binner
ainner1

您將需要遍歷.keys()來訪問密鑰名稱。

您可以嘗試以下方法:

json_dict = {"key": "value", "key1": [{"binner": "inner_value"}, {"ainner1": "inner_value1"}, {"cinner": "inner_value"}, {"dinner1": "inner_value1"}]}
new_data = sorted([list(i.keys())[0] for i in json_dict["key1"]])

輸出:

['ainner1', 'binner', 'cinner', 'dinner1']

一旦有了所需的對象( key1的值)

a = [{"binner": "inner_value"}, {"ainner1": "inner_value1"},
     {"cinner": "inner_value"}, {"dinner1": "inner_value1"}]

import itertools

從每個字典中獲取鍵

b = map(dict.keys, a)

展平關鍵視圖對象列表

c = itertools.chain.from_iterable(b)

分類

d = sorted(c)

打印

fmt_s = '- {}'
for thing in d:
    print(fmt_s.format(thing))

您發布的代碼完成了大部分工作,更改了以下的pprint

def pprint(a_dict):
    for k in a_dict["key1"]:
       print("-", k.keys())

def pprint(a_dict):
    for k in a_dict["key1"]:
        print("-", list(k.keys())[0])

收益率:

- binner
- ainner1
- cinner
- dinner1

暫無
暫無

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

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