我有一个包含元组的列表。格式如下:
>>> list1 = [('CN=blah,OU=blah,DC=blah', {'mail': ['email1@mail.com']}),
('CN=blah,OU=blah,DC=blah', {'mail': ['email2@mail.com']})]`
print list1产生以下输出:
>>> print list1
[('CN=blah,OU=blah,DC=blah', {'mail': ['email1@mail.com']}),
('CN=blah,OU=blah,DC=blah', {'mail': ['email2@mail.com']})]`
我希望输出只列出电子邮件地址,如下所示:
email1@mail.com, email2@mail.com
或者这个:
['email1@mail.com','email2@mail.com']
我究竟如何做到这一点?
答案 0 :(得分:2)
list1 = [('CN=blah,OU=blah,DC=blah', {'mail': ['email1@mail.com']}), ('CN=blah,OU=blah,DC=blah', {'mail': ['email2@mail.com']})]
print [x[1]["mail"][0] for x in list1]
['email1@mail.com', 'email2@mail.com']
x[1]
是您的dict
的第二个子元素,因此x[1]["mail"]
使用键mail
从dict获取值,[0]
只提取list
来自" ".join([x[1]["mail"][0] for x in list1])
email1@mail.com email2@mail.com
的电子邮件。
如果要提取字符串,可以在电子邮件列表中使用str.join:
dicts
如果有可能mail
没有密钥if "mail" in x[1]
,您可能需要先检查密钥是否存在[x[1]["mail"][0] for x in list1 if "mail" in x[1]]
:
" ".join([x[1]["mail"][0] for x in list1 if isinstance(x[1],dict) and "mail" in x[1] ])
如果不是所有的第二个元素都不那么你可以使用isinstace来检查它是否是dict:
{{1}}