是否有一种简便的方法可以在python中格式化字典以获得良好的输出?
目前,我正在学习如何与python中的API / XMLRPC进行交互。提出请求后,我得到了如下格式的字典:
{'category_id': '9', 'parent_id': '3', 'name': 'Headboard', 'is_active': '1', 'position': '6', 'level': '3', 'children': []}, {'category_id': '10', 'parent_id': '3', 'name': 'Mattress', 'is_active': '1', 'position': '7', 'level': '3', 'children': []},
这是一堵文字墙,很容易就是几页。有没有一种简单的方法可以很好地显示此数据,或者只是在一行上输出每个类别的名称?
编辑:
这是尝试通过pprint打印它的结果,最终遗漏了很多数据:
import xmlrpc.client
import pprint
svc = xmlrpc.client.ServerProxy('https://example.com/api/xmlrpc/')
session = svc.login('apiuser', 'apikey')
temp = svc.call(session, 'catalog_category.tree')
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(temp)
答案 0 :(得分:1)
您可以使用pprint.pprint
:
>>> pprint([{'category_id': '9', 'parent_id': '3', 'name': 'Headboard', 'is_active': '1', 'position': '6', 'level': '3', 'children': []}, {'category_id': '10', 'parent_id': '3', 'name': 'Mattress', 'is_active': '1', 'position': '7', 'level': '3', 'children': []}])
[{'category_id': '9',
'children': [],
'is_active': '1',
'level': '3',
'name': 'Headboard',
'parent_id': '3',
'position': '6'},
{'category_id': '10',
'children': [],
'is_active': '1',
'level': '3',
'name': 'Mattress',
'parent_id': '3',
'position': '7'}]
要仅显示类别名称,您可以执行以下操作:
>>> [x['name'] for x in ...]
或者,您可以使用json.dump(s)
+您选择的JSON查看器(可以使用很多在线选择,也可以只使用本地浏览器)。
以递归方式进行处理:
import copy
t2 = copy.deepcopy(temp) # Modify for printing.
items = [t2]
while items:
item = items.pop(-1)
del item['category_id']
del item['is_active']
del item['level']
del item['position']
... # Whatever other keys you want to delete.
items += item.get('children', [])
pprint(t2)
答案 1 :(得分:1)
这将为您提供类别名称列表:
list_of_dicts = [{'category_id': '9', 'parent_id': '3', 'name': 'Headboard', 'is_active': '1', 'position': '6', 'level': '3', 'children': []}, {'category_id': '10', 'parent_id': '3', 'name': 'Mattress', 'is_active': '1', 'position': '7', 'level': '3', 'children': []}]
category_names = [dict['name'] for dict in list_of_dicts]
print(category_names)
输出:
[“床头板”,“床垫”]
答案 2 :(得分:0)
如果数据实际上是字典的字典,则其格式为:{ "key_1": {}, "key_2": {} ... "key_n": {} }
然后下面的代码将创建类别名称的列表:
dict_of_dicts = {"key_a": {'category_id': '9', 'parent_id': '3', 'name': 'Headboard', 'is_active': '1', 'position': '6', 'level': '3', 'children': []}, "key_b": {'category_id': '10', 'parent_id': '3', 'name': 'Mattress', 'is_active': '1', 'position': '7', 'level': '3', 'children': []}}
category_names = [dict["name"] for dict in dict_of_dicts.values()]
print(category_names)
输出:
[“床头板”,“床垫”]