用python打印json文件的所有键

用python打印json文件的所有键,python,json,key,Python,Json,Key,我有一个文件夹,里面有大约20000个JSON文件。我想找出每个JSON的所有唯一键,并对所有键进行并集。然而,我只是在最初的一步就被卡住了。我能够找到单个JSON文件的密钥 到目前为止,我已经编写了以下代码: from pprint import pprint import json json_data=open("/Users/akira/out/1.json") jdata = json.load(json_data) for key, value in jdata: pprint

我有一个文件夹,里面有大约20000个JSON文件。我想找出每个JSON的所有唯一键,并对所有键进行并集。然而,我只是在最初的一步就被卡住了。我能够找到单个JSON文件的密钥

到目前为止,我已经编写了以下代码:

from pprint import pprint
import json
json_data=open("/Users/akira/out/1.json")
jdata = json.load(json_data)

for key, value in jdata:
   pprint("Key:")
   pprint(key)
它给了我一个错误,如下所示:

Traceback (most recent call last):
 File "/Users/akira/PycharmProjects/csci572/linkedbased.py",     line 8, in <module>
   for key, value in jdata:
 ValueError: need more than 1 value to unpack

使用
代替jdata.items()中的key,value:
,如下所示:

for key, value in data.items():
    pprint("Key:")
    pprint(key)
请看一看dict的示例:

项目()

返回字典项((键、值)对的新视图

编辑:如果要获取所有嵌套键,而不仅仅是顶级键,可以采用类似于中建议的方法:

您应该在
中使用或作为键,在jdata中使用值

所以,两者都应该是

for key, value in jdata.items():

分别适用于蟒蛇3和蟒蛇2

请参阅此问题的答案,了解两者之间的区别:


如果您只需要迭代字典的键,您甚至可以尝试或

只想添加一条注释,说明Python 3.oh中已经删除了
.iteritems()
!时代在变!我应该学习更多关于Python 2和Python 3的知识
def get_keys(dl, keys_list):
    if isinstance(dl, dict):
        keys_list += dl.keys()
        map(lambda x: get_keys(x, keys_list), dl.values())
    elif isinstance(dl, list):
        map(lambda x: get_keys(x, keys_list), dl)

keys = []
get_keys(jdata, keys)

print(keys)
# [u'a', u'inLanguage', u'description', u'priceCurrency', u'geonames_address', u'price', u'title', u'availabl', u'uri', u'seller', u'publisher', u'a', u'hasIdentifier', u'hasPreferredName', u'uri', u'fallsWithinState1stDiv', u'score', u'fallsWithinCountry', u'fallsWithinCountyProvince2ndDiv', u'geo', u'a', u'hasType', u'label', u'a', u'label', u'a', u'uri', u'hasName', u'a', u'label', u'a', u'uri', u'hasName', u'a', u'label', u'a', u'uri', u'lat', u'lon', u'a', u'address', u'a', u'name', u'a', u'description', u'a', u'name', usury']

print(list(set(keys)))    # unique list of keys
# [u'inLanguage', u'fallsWithinState1stDiv', u'label', u'hasName', u'title', u'hasPreferredName', u'lon', u'seller', u'score', u'description', u'price', u'address', u'lat', u'fallsWithinCountyProvince2ndDiv', u'geo', u'a', u'publisher', u'hasIdentifier', u'name', u'priceCurrency', u'geonames_address', u'hasType', u'availabl', u'uri', u'fallsWithinCountry']
for key, value in jdata.items():
for key, value in jdata.iteritems():