如何使用此特定数据结构从.txt文件中创建字典?

问题描述

我正在使用的txt文件包含以下内容

[
  {
    "Data": "asdf","Monday": "321.247","Tuesday": "27.801","Thursday": "35.235"
  },{
    "Data": "whatever","Tuesday": "207.568","Thursday": "31.027","Wednesday": "56.902"
  }
]

我想创建一个具有相同结构的字典,因此我可以使用“数据”字段作为第一级密钥,将工作日作为第二级密钥,并将数值作为值来重新组织它。 我尝试用json库导入它,但是我真的不知道下一步该怎么做,因为我可以用它创建的只是一个列表。

编辑:

这样做时:

with open(".../file.txt") as file:
  data=json.load(file)

type(data)

我得到:

list

我希望得到的是像这样的字典:

data
{
  "asdf" : {
    "Monday": 321.247,"Tuesday": 27.801,"Thursday": 35.235
  },"whatever": {
    "Monday": 321.247,"Tuesday": 207.568,"Thursday": 31.027,"Wednesday": 56.902
  }
}

解决方法

使用这种嵌套的dict理解有点棘手,但是仔细想一想,您就会发现(可以随时要求更多的解释。),效率方面,我认为这是最好的方法:

a = [
  {
    "Data": "asdf","Monday": "321.247","Tuesday": "27.801","Thursday": "35.235"
  },{
    "Data": "whatever","Tuesday": "207.568","Thursday": "31.027","Wednesday": "56.902"
  }
]

modified_a = {item["Data"]:{key:val for key,val in item.items() if key!="Data"} for item in a}

print(modified_a)

输出:

{'asdf': {'Monday': '321.247','Tuesday': '27.801','Thursday': '35.235'},'whatever': {'Monday': '321.247','Tuesday': '207.568','Thursday': '31.027','Wednesday': '56.902'}}
,

您可以使用eval来从文件中读取后创建字典

with open('test','r') as reader:
    d = eval(reader.read())
print(d)

输出:

[{'Data': 'asdf','Monday': '321.247',{'Data': 'whatever','Wednesday': '56.902'}]
# using above data structure you can create your leveled key as you want