在Python中动态生成列表和字典。我正在尝试用Python创建数组
我是Python新手,在创建动态列表和字典时遇到了问题 我想要的结果是:在Python中动态生成列表和字典。我正在尝试用Python创建数组,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我是Python新手,在创建动态列表和字典时遇到了问题 我想要的结果是: { 'page1': [{'email': [{'emailAddress':'abc@gmail.com'}],[{'emailAddress1':'abc@gmail.com1'}],... }],[{'url': [{'url':'abc.com','cordinates','10,10,100,45'}],[{'url':'abc.com','cordinates',
{
'page1':
[{'email':
[{'emailAddress':'abc@gmail.com'}],[{'emailAddress1':'abc@gmail.com1'}],...
}],[{'url':
[{'url':'abc.com','cordinates','10,10,100,45'}],[{'url':'abc.com','cordinates','10,10,100,45'}]...
}]
}
{
'page1':
[{'email':
[{'emailAddress':'abc@gmail.com'}],[{'emailAddress1':'abc@gmail.com1'}],...
}],[{'url':
[{'url':'abc.com','cordinates','10,10,100,45'}],[{'url':'abc.com','cordinates','10,10,100,45'}]...
}]
}
{
'page1':
[{'email':
[{'emailAddress':'abc@gmail.com'}],[{'emailAddress1':'abc@gmail.com1'}],...
}],[{'url':
[{'url':'abc.com','cordinates','10,10,100,45'}],[{'url':'abc.com','cordinates','10,10,100,45'}]...
}]
}.....
我无法提供原始数据供您查看,但我将使用以下代码创建此类数据:
from pprint import pprint
dict1 = {}
dict2 = {}
dict3 = {}
newObj = {'name'}
finalVar = []
finalVars = []
newVal = {}
for i in range(10):
temp = {'page'+str(i)}
for k in range(10):
newtemp = {'page'+str(i):{'email':[{
'emailId':str(i),
'test':str(k)
}]}}
finalVar.append(newtemp)
for i in range(10):
temp = {'page'+str(i)}
for k in range(10):
newtemp = {'page'+str(i):{'email':[{
'url':str(i),
'testing':str(k)
}]}}
finalVars.append(newtemp)
pprint(finalVars)
我是Python新手,所以即使我不知道我正在创建有效的列表和数组字典。因此,如果有任何错误,请道歉。从问题中我假设需要一个字典,其键为page0、page1等,每个键的值是另一个字典,键为电子邮件,URL和电子邮件的值是一个dict数组,如
{email':'0@mail.com'}
url的值是一个dict数组,如{'coordinates':[10,10,100,45],'url':'0.com'}
。下面是一个示例代码,它生成以下输出(如上所述)
对应的python代码:
import pprint
result = {}
emails_key = "emails"
urls_key = "urls"
for i in range(2):
page_key = "page" + str(i)
result[page_key] = {emails_key: [], urls_key: []}
for j in range(2):
result[page_key][emails_key].append({'email': str(j) + '@mail.com'})
result[page_key][urls_key].append({'url': str(j) + '.com', 'coordinates': [10,10,100,45]})
pprint.pprint(result)
希望这能有所帮助。我相信类似于以下代码的代码将生成您想要的数组类型
email_entries = []
for i in range(num_email_entries):
email_entries.append([{'emailAddress' + str(i)*(i>0):'abc@gmail.com'}])
email_container = [{'email':tuple(email_entries)}]
url_entries = []
for i in range(num_url_entries):
url_entries.append([{'url' + str(i)*(i>0):'abc.com',
'coordinates' + str(i)*(i>0):'10,10,100,45'}])
url_container = [{'url':tuple(url_entries)}]
array = {'page': (email_container,url_container)}
num\u email\u entries=num\u url\u entries=2
时的输出为
{'page':
([{'email':
([{'emailAddress': 'abc@gmail.com'}],
[{'emailAddress1': 'abc@gmail.com'}])
}],
[{'url':
([{'url': 'abc.com',
'coordinates': '10,10,100,45'}],
[{'url1': 'abc.com',
'coordinates1': '10,10,100,45'}])
}]
)
}
我需要这种类型的数组,因为我必须在XLSX writer中使用这种数组。从来没有使用过临时对象,而且我认为它拼写为“坐标”,可能永远不会使用临时对象的双重副本。我不明白你的意思。您的意思是我们不能将temp用作变量?
temp
不是无效名称。请你把你的问题解释清楚一点好吗?您当前的代码有什么问题,您需要什么帮助?
{'page':
([{'email':
([{'emailAddress': 'abc@gmail.com'}],
[{'emailAddress1': 'abc@gmail.com'}])
}],
[{'url':
([{'url': 'abc.com',
'coordinates': '10,10,100,45'}],
[{'url1': 'abc.com',
'coordinates1': '10,10,100,45'}])
}]
)
}