首页 > 解决方案 > 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 选项卡中

标签: pythonjsonlistdictionaryopenpyxl

解决方案


如果你有这样的字典:

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)

推荐阅读