如何创建一组简单的条目uniqe id json python

时间:2016-02-16 11:24:20

标签: python json

我正在尝试创建一个简单的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。我很感激任何建议。

2 个答案:

答案 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]