我有一本字典,它有:d ={10L: {u'Owner Name': u'abc', u'Email': u'wa@gmail.com', u'Manager Name': u'jhon'}, 12L: {u'Owner Name': u'awdaw', u'Email': u'raghavpatnecha15@gmail.com', u'Manager Name': u'raghav'}}
所以当我做d[10][Owner Name]时,我得到abc。但这种模式是重复的,我的意思是每个子字典都有相同的子键,并且每个子字典的长度相对来说是相同的。所以,如果我用id=10在subdict中添加几个参数,那么我将向其他键添加相同的参数。在
现在,我的问题是,每当我的sub dict中的一个项目增加时,我都必须创建一个空列表,并通过以下方式将其值附加到该列表中:
^{pr2}$
一开始我认为这是一个很好的方法,但是随着我的子字典中的条目越来越多,我需要创建一个空列表,并追加并返回它。在
有没有办法让这个过程自动化。因此,如果我有一个子密钥名Product Name,我的函数可以自动创建一个空列表Product_Names,并像Product_names.append(d[j]['Product Name'])一样追加它,然后在我调用get contacts时返回它:
Owner_names, emails, Manager_Name, Product Names = get_contacts()。在
我是否可以编写一个函数:计算字典中的子键,并通过将s作为post-fix来生成空列表。
将相应的值追加到列表并将其添加到return语句中。
更新
如果我想控制要使用的值,defaultdict解决方案是否仍然有用。目前我正在做的是:for name, email, manager in zip(names, emails, managers):
print name, email , manager
message = message_template.substitute(PERSON_NAME=name.title(),MANAGER_NAME=manager.title())
假设我有两个列表:l1 = [u'abc', u'awdaw']
l2 = [u'jhon', u'raghav']
for name1,name2 in zip(l1,l2):
print name1, name2
但有明显的原因我不能拉字典。默认dict如何帮助我使用要使用的值。所以我不想包括Owner_Name我只想跳过这一行:message = message_template.substitute(MANAGER_NAME=manager.title())