python - python:如何将 dict 列表转换为 json 文件?
问题描述
'''
import openpyxl
from openpyxl import load_workbook
from openpyxl import Workbook
from Tkinter import Tk
from tkFileDialog import askopenfilename
import itertools
import sys
import warnings
import json
def find (param):
for row in ws.iter_rows():
try:
keyword = row[1].value
values = [item.value for item in row[2:]]
if keyword == ("%s" %(param) ):
keyword = (values)
return keyword
except (AttributeError):
continue
if not sys.warnoptions:
warnings.simplefilter("ignore")
Tk().withdraw()
filename = askopenfilename()
print ("Working, please be patient")
wb = openpyxl.load_workbook(filename, data_only=True)
print ("\r")
count = 0
for ws in wb.worksheets:
tlist = ws.title
print ("%s : %s" %(count,tlist) )
count = count + 1
x = int(input ("\nchoose number: ") )
ws = wb.worksheets[x]
param = "Site Name"
SiteName = find(param)
SiteName = (SiteName)
param = ("NE Name(TID)")
TID = find(param)
TID = (TID)
param = ("Shelf Number")
SH_Num = find(param)
SH_Num = (SH_Num)
param = ("CLLI")
CLLI = find(param)
CLLI = (CLLI)
z = {'SiteName' : SiteName,"TID" : TID, "SH_Num" : SH_Num}
with open('data7.json', 'w') as f:
json.dump(z,f,indent=4)
'''
这里面还有很多变数。每个站点都有站点名称、TID、货架编号等。想要按站点分隔变量;站点 1 的变量、站点 2 的变量等。并通过 TID1-SH_Num1[TID] 访问变量
输出 =
{
"SiteName": [
"Site1",
"Site2",
"Site3",
],
"TID": [
"TID1",
"TID2",
"TID3",
],
"SH_Num": [
"SH_Num1",
"SH_Num2",
"SH_Num3",
]
}
我想要的是
{
TID1-SH_Num1: [
"SiteName" : "SiteName1"
"TID": "TID1"
"SH_Num" : "SH_Num1"
],
TID2-SH_Num2: [
"SiteName" : "SiteName2"
"TID": "TID2"
"SH_Num" : "SH_Num2"
],
],
TID3-SH_Num3: [
"SiteName" : "SiteName3"
"TID": "TID3"
"SH_Num" : "SH_Num3"
],
}
ETC..
我确实有它,其中各个站点变量位于每个站点的单独文本文件中,并且每个站点的变量都是正确的。现在想要它在 JSON 中,所以我可以将所有站点和变量添加到 tkinter 选项卡中
解决方案
如果你有这样的字典:
a = {
"TID1-SH_Num1": [
"SiteName" : "SiteName1"
"TID": "TID1"
"SH_Num" : "SH_Num1"
],
"TID2-SH_Num2": [
"SiteName" : "SiteName2"
"TID": "TID2"
"SH_Num" : "SH_Num2"
],
],
"TID3-SH_Num3": [
"SiteName" : "SiteName3"
"TID": "TID3"
"SH_Num" : "SH_Num3"
],
}
然后你可以把它转储到一个文件中:
import json
with open('data7.json', 'w') as f:
json.dump(a,f,indent=4)