[英]How to check if dictionary is within a list of dictionaries on both key and value of dict, where dicts can be nested?
[英]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.