我正在尝试创建一个简单的python应用程序,它将以json格式python存储一组简单的数据。几天来,我一直在努力解决这个问题。我想要做的是以下几点:
import json
student = {"101":{"class":'V', "Name":'Rohit', "Roll_no":7},
"102":{"class":'X', "Name":'David', "Roll_no":8},
"103":{"class":'Z', "Name":'Samiya', "Roll_no":12}}
我找不到如何做那样的事情:例如 我想补充一下:
"104":{"class":'Z', "Name":'Jans', "Roll_no":15}
student = {"101":{"class":'V', "Name":'Rohit', "Roll_no":7},
"102":{"class":'X', "Name":'David', "Roll_no":8},
"103":{"class":'Z', "Name":'Samiya', "Roll_no":12}
"104":{"class":'Z', "Name":'Jans', "Roll_no":15}}
有人可以向我解释如何添加,删除,更换, 在json python文件中组织的条目。想弄清楚会很高兴 ORDER BY,SORT的方式,例如"类"字段或任何其他类似于MySQL ORDER BY命令的参数。
我发现了成千上万的链接,但我仍然迷失了。
THX。我很感激任何建议。
答案 0 :(得分:0)
您使用的数据结构不是JSON,而是dict
。
>>> student = {
"101":{"class":'V', "Name":'Rohit', "Roll_no":7},
"102":{"class":'X', "Name":'David', "Roll_no":8},
"103":{"class":'Z', "Name":'Samiya', "Roll_no":12}
}
从student
使用get
>>> print student["101"]
{'class': 'V', 'Roll_no': 7, 'Name': 'Rohit'}
从dict中删除条目,删除不需要的密钥
>>> del student["101"]
{'102': {'Name': 'David', 'Roll_no': 8, 'class': 'X'},
'103': {'Name': 'Samiya', 'Roll_no': 12, 'class': 'Z'}}
从dict添加和替换条目是类似的。要替换,请选择所需的密钥并更改其值。要添加,只需将新密钥,值对添加到现有dict
<强>替换强>
>>> student["101"] = {'Name': 'Johnny', 'Roll_no': 9, 'class': 'S'},
>>> print student
student = {
"101":{'Name': 'Johnny', 'Roll_no': 9, 'class': 'S'},
"102":{"class":'X', "Name":'David', "Roll_no":8},
"103":{"class":'Z', "Name":'Samiya', "Roll_no":12}
}
添加强>
>>> student["104"] = {'Name': 'Johnny', 'Roll_no': 9, 'class': 'S'},
>>> print student
student = {
"101":{"class":'V', "Name":'Rohit', "Roll_no":7},
"102":{"class":'X', "Name":'David', "Roll_no":8},
"103":{"class":'Z', "Name":'Samiya', "Roll_no":12},
"104":{"class":'S', "Name":'Johnny', "Roll_no":9},
}
默认情况下,字典不是有序的,但Python有OrderedDict
可以帮助你。
答案 1 :(得分:0)
首先,我想感谢你的每一个建议。他们或多或少塑造了我的解决方案。尽管如此,我已经得到了最终解决方案,我想它也可以帮助其他人。
让我们看看:
创建DICT:
>>> student = {}
>>>
>>> names =['jano','tibor','petka','jozi','timea','lenka','monika','fero']
>>> roll = [i for i in xrange(8)]
>>> for i,j,k in zip(xrange(8),names,roll):
... student[i] = {'Name': j, 'Roll_no': k, 'class': 'S'}
上一步的结果:
>>> student
{0: {'Name': 'jano', 'Roll_no': 0, 'class': 'S'}, 1: {'Name': 'tibor', 'Roll_no': 1, 'class': 'S'}, 2: {'Name': 'petka', 'Roll_no': 2, 'class': 'S'}, 3: {'Name': 'jozi', 'Roll_no': 3, 'class': 'S'}, 4: {'Name': 'timea', 'Roll_no': 4, 'class': 'S'}, 5: {'Name': 'lenka', 'Roll_no': 5, 'class': 'S'}, 6: {'Name': 'monika', 'Roll_no': 6, 'class': 'S'}, 7: {'Name': 'fero', 'Roll_no': 7, 'class': 'S'}}
>>> for i,j in student.items():
... print i,j
...
0 {'Name': 'jano', 'Roll_no': 0, 'class': 'S'}
1 {'Name': 'tibor', 'Roll_no': 1, 'class': 'S'}
2 {'Name': 'petka', 'Roll_no': 2, 'class': 'S'}
3 {'Name': 'jozi', 'Roll_no': 3, 'class': 'S'}
4 {'Name': 'timea', 'Roll_no': 4, 'class': 'S'}
5 {'Name': 'lenka', 'Roll_no': 5, 'class': 'S'}
6 {'Name': 'monika', 'Roll_no': 6, 'class': 'S'}
7 {'Name': 'fero', 'Roll_no': 7, 'class': 'S'}
......好吧那太棒了..这就是我想要的......
打印所需的列:
>>> for i,j in student.items():
... print j['Name'],j['Roll_no']
...
jano 0
tibor 1
petka 2
jozi 3
timea 4
lenka 5
monika 6
fero 7
使用某些条件:
>>> for i,j in student.items():
... if j['Name'] == "monika":
... print i,j
...
6 {'Name': 'monika', 'Roll_no': 6, 'class': 'S'}
按栏排序 - 重要
所有值基本上按“Roll_no”列排序!!!!
from collections import OrderedDict
>>> c=OrderedDict(sorted(student.items(),key=lambda (x,y): y['Roll_no']))
>>> for i,j in c.items(): print i,j
...
0 {'Name': 'jano', 'Roll_no': 0, 'class': 'S'}
1 {'Name': 'tibor', 'Roll_no': 1, 'class': 'S'}
2 {'Name': 'petka', 'Roll_no': 2, 'class': 'S'}
3 {'Name': 'jozi', 'Roll_no': 3, 'class': 'S'}
5 {'Name': 'lenka', 'Roll_no': 5, 'class': 'S'}
6 {'Name': 'monika', 'Roll_no': 6, 'class': 'S'}
7 {'Name': 'fero', 'Roll_no': 7, 'class': 'S'}
4 {'Name': 'timea', 'Roll_no': 8, 'class': 'S'}
REPLACE'Roll_no':8到'Roll_no':12
>>> student[4] = {'Name': 'timea', 'Roll_no': 12, 'class': 'S'}
>>> for i,j in student.items(): print i,j
...
0 {'Name': 'jano', 'Roll_no': 0, 'class': 'S'}
1 {'Name': 'tibor', 'Roll_no': 1, 'class': 'S'}
2 {'Name': 'petka', 'Roll_no': 2, 'class': 'S'}
3 {'Name': 'jozi', 'Roll_no': 3, 'class': 'S'}
4 {'Name': 'timea', 'Roll_no': 12, 'class': 'S'}
5 {'Name': 'lenka', 'Roll_no': 5, 'class': 'S'}
6 {'Name': 'monika', 'Roll_no': 6, 'class': 'S'}
7 {'Name': 'fero', 'Roll_no': 7, 'class': 'S'}
删除特定条目:
del student[7]