<p>由于您声明“我掌握了按值对字典列表排序的技术”</strong>我将发布一些代码,用于递归地从我发布的另一篇文章中收集数据,并将其留给您来实现排序技术。代码:</p>
<pre><code>myjson = {
'transportation': 'car',
'address': {
'driveway': 'yes',
'home_address': {
'state': 'TX',
'city': 'Houston'}
},
'work_address': {
'state': 'TX',
'city': 'Sugarland',
'location': 'office-tower',
'salary': 30000}
}
def get_keys(some_dictionary, parent=None):
for key, value in some_dictionary.items():
if '{}.{}'.format(parent, key) not in my_list:
my_list.append('{}.{}'.format(parent, key))
if isinstance(value, dict):
get_keys(value, parent='{}.{}'.format(parent, key))
else:
pass
my_list = []
get_keys(myjson, parent='myjson')
print(my_list)
</code></pre>
<p>用于从json文件中递归检索所有键。它输出:</p>
<pre><code>['myjson.address',
'myjson.address.home_address',
'myjson.address.home_address.state',
'myjson.address.home_address.city',
'myjson.address.driveway',
'myjson.transportation',
'myjson.work_address',
'myjson.work_address.state',
'myjson.work_address.salary',
'myjson.work_address.location',
'myjson.work_address.city']
</code></pre>
<p>主要要注意的是<code>if isinstance(value, dict):</code>导致<code>get_keys()</code>再次被调用,因此它具有递归功能(但在本例中仅适用于嵌套字典)。你知道吗</p>