繁体   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