我有 1 個字典和 1 個陣列。我的任務是遍歷字典并創建 5 個單獨的字典,其中鍵“電子郵件”將替換為陣列值。我所有創建回圈的嘗試都只使用最后一個陣列的值,所以只有一個字典。如何正確回圈它來解決它
data = {
"company": "Company",
"phone": " 1111111",
"email": "[email protected]",
"password1": "defaultpassword",
"password2": "defaultpassword",
"terms_agree": True,
"first_name": "TestUser",
"last_name": "One"
}
emails_list = ['[email protected]',
'[email protected]',
'[email protected]',
'[email protected]',
'[email protected]'
]
uj5u.com熱心網友回復:
你可以用python在一行中做到這一點!見下文
result = [{**data,**{"email": val}} for val in emails_list]
這會根據您的電子郵件長度創建一個包含 N 個字典的串列。導致
[
{
"company": "Company",
"phone": " 1111111",
"email": "[email protected]",
"password1": "defaultpassword",
"password2": "defaultpassword",
"terms_agree": true,
"first_name": "TestUser",
"last_name": "One"
},
{
"company": "Company",
"phone": " 1111111",
"email": "[email protected]",
"password1": "defaultpassword",
"password2": "defaultpassword",
"terms_agree": true,
"first_name": "TestUser",
"last_name": "One"
},
{
"company": "Company",
"phone": " 1111111",
"email": "[email protected]",
"password1": "defaultpassword",
"password2": "defaultpassword",
"terms_agree": true,
"first_name": "TestUser",
"last_name": "One"
},
{
"company": "Company",
"phone": " 1111111",
"email": "[email protected]",
"password1": "defaultpassword",
"password2": "defaultpassword",
"terms_agree": true,
"first_name": "TestUser",
"last_name": "One"
},
{
"company": "Company",
"phone": " 1111111",
"email": "[email protected]",
"password1": "defaultpassword",
"password2": "defaultpassword",
"terms_agree": true,
"first_name": "TestUser",
"last_name": "One"
}
]
uj5u.com熱心網友回復:
我可能誤解了你想要什么,但你不能回圈遍歷陣列并單獨設定字典的電子郵件并復制它嗎?下面的例子:
emails_dict_ls = []
for email in emails_list:
data_copy = data.copy()
data_copy["email"] = email
emails_dict_ls.append(data_copy)
print(emails_dict_ls)
這將列印出以下內容
[{'company': 'Company', 'phone': ' 1111111', 'email': '[email protected]', 'password1': 'defaultpassword', 'password2': 'defaultpassword', 'terms_agree': True, 'first_name': 'TestUser', 'last_name': 'One'},
{'company': 'Company', 'phone': ' 1111111', 'email': '[email protected]', 'password1': 'defaultpassword', 'password2': 'defaultpassword', 'terms_agree': True, 'first_name': 'TestUser', 'last_name': 'One'},
{'company': 'Company', 'phone': ' 1111111', 'email': '[email protected]', 'password1': 'defaultpassword', 'password2': 'defaultpassword', 'terms_agree': True, 'first_name': 'TestUser', 'last_name': 'One'},
{'company': 'Company', 'phone': ' 1111111', 'email': '[email protected]', 'password1': 'defaultpassword', 'password2': 'defaultpassword', 'terms_agree': True, 'first_name': 'TestUser', 'last_name': 'One'},
{'company': 'Company', 'phone': ' 1111111', 'email': '[email protected]', 'password1': 'defaultpassword', 'password2': 'defaultpassword', 'terms_agree': True, 'first_name': 'TestUser', 'last_name': 'One'}]
uj5u.com熱心網友回復:
你需要做一個深拷貝:
import copy
def new_dic(email,data_dic):
new_dic = copy.deepcopy(data_dic); new_dic["email"] = email
return(new_dic)
data = {
"company": "Company",
"phone": " 1111111",
"email": "[email protected]",
"password1": "defaultpassword",
"password2": "defaultpassword",
"terms_agree": True,
"first_name": "TestUser",
"last_name": "One"}
emails_list = ['[email protected]',
'[email protected]',
'[email protected]',
'[email protected]',
'[email protected]'
]
dic_list = []
for x in range(0,len(emails_list)):
dic_list.append(new_dic(emails_list[x],data))
print(dic_list[0]['email'])
'[email protected]'
print(dic_list[-1]['email'])
'[email protected]'
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453156.html
標籤:Python 数组 python-3.x
