我有这样的代码声明:
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'}
我怎样设法做到这一点?
答案 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': {}}