用python打印json文件的所有键
我有一个文件夹,里面有大约20000个JSON文件。我想找出每个JSON的所有唯一键,并对所有键进行并集。然而,我只是在最初的一步就被卡住了。我能够找到单个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
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():