在jthon

时间:2016-01-12 11:19:52

标签: python json dictionary

我有这样的代码声明:

def add_names(req, names, firstnames, middlenames, lastnames, genders, e_mails, phone_numbers, locations, indata):
        data = []
        for a in range(len(names)):

                nxt = {"name": names[a], "profile_id": indata["profile_id"], "firstname": firstnames[a], "middlename": middlenames[a], "lastname": lastnames[a],
                       "e_mail": e_mails[a], "phone_number": phone_numbers[a], "location": locations[a], "sex": genders[a],
                       "user_id": indata["user_id"], "updated_by": indata["username"]}

                cpnxt = nxt
                del cpnxt['profile_id'], cpnxt['user_id'], cpnxt['updated_by']
                nxt.update({"jsondata": cpnxt})
                data.append(nxt)

        qs = "insert into persons (id, name, user_id, profile_id, firstname, middlename, lastname, e_mail, phone_number, location, sex, updated_by) values "
        qs += "(DEFAULT, %(name)s, %(user_id)s, %(profile_id)s, %(firstname)s, %(middlename)s, %(lastname)s, %(e_mail)s, %(phone_number)s, %(location)s, %(sex)s,"
        qs += " %(updated_by)s) returning id"
        res = db_add_list(req, qs, data)
        return res

这里,基本上我将列表值作为参数,并将列表值放入名为nxt{}的json字典中,并使用查询"qs"db_add_list()将它们添加到数据库中功能

现在,我想做的是;我想在nxt{}字典中添加一个json字典。我的词典将是nxt{}词典的子集,它只涉及nxt{}的某些值。

我想用这段代码做到这一点,但我得到了一个奇怪的输出:

nxt = {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {'e_mail': '', 'firstname': 'John', 'jsondata': {...}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}, 'lastname': 'Smith', 'location': '', 'middlename': '', 'name': 'John Smith', 'phone_number': '', 'sex': 'M'}

我怎样设法做到这一点?

3 个答案:

答案 0 :(得分:1)

只需更新您的nxt词典并将新的子词词典添加到其中。

nxt.update({"new_dic": my_new_dic})

答案 1 :(得分:1)

您可以将其添加为nxt字典的键值对。像这样:

nxt['subset'] = {'key': 'value'}

答案 2 :(得分:1)

前面描述的两种解决方案都有用,我用pythons shell给你看。

In [1]: next = {}

In [2]: indexer = {}

In [3]: next['indexer'] = indexer

In [4]: upd = {}

In [5]: next.update({'upd' : upd})

In [6]: next

Out[6]: {'indexer': {}, 'upd': {}}