Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何递归打印列表中的元组值?_Python - Fatal编程技术网

Python 如何递归打印列表中的元组值?

Python 如何递归打印列表中的元组值?,python,Python,我有一个里面有元组的列表。格式如下: >>> list1 = [('CN=blah,OU=blah,DC=blah', {'mail': ['email1@mail.com']}), ('CN=blah,OU=blah,DC=blah', {'mail': ['email2@mail.com']})]` 打印列表1会产生以下输出: >>> print list1 [('CN=blah,OU=blah,DC=blah', {'mail': ['email1@m

我有一个里面有元组的列表。格式如下:

>>> list1 = [('CN=blah,OU=blah,DC=blah', {'mail': ['email1@mail.com']}),
('CN=blah,OU=blah,DC=blah', {'mail': ['email2@mail.com']})]`
打印列表1会产生以下输出:

>>> 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']
我究竟如何做到这一点

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]
仅从
列表中提取电子邮件

如果要提取可在电子邮件列表中使用的字符串:

" ".join([x[1]["mail"][0] for x in list1])
email1@mail.com email2@mail.com
如果有可能在没有键的情况下出现
dicts
mail
,您需要首先使用
检查键是否存在,如果x[1]
中有“mail”:

[x[1]["mail"][0] for x in list1 if "mail" in x[1]]
如果并非所有第二个元素都是dict,则可以使用isinstace首先检查它是否是dict:

" ".join([x[1]["mail"][0] for x in list1 if isinstance(x[1],dict) and  "mail" in x[1] ])

与“邮件”对应的列表中是否会有不止一个电子邮件地址?如果没有,您是否承诺在那里使用列表类型,而字符串就可以了?谢谢您的快速回复!当我使用上面介绍的技巧时,效果非常好。但是由于某种原因,当我使用脚本生成的列表时,我得到了以下错误:
Traceback(最近一次调用):文件“ldaptest.py”,第13行,在print[x[1][“mail”][0]for x in mylist]TypeError:list索引必须是整数,not str
知道是什么原因导致的吗?啊,好吧,所以不是所有的第二个元素都是dicts?我将添加另一个检查,如果x[1]
中的“邮件”有效,您是否使用了x[1]中的“邮件”?
[x[1][“邮件”][0]来检查列表1中的x!非常感谢你,你就是帕德雷克!不用担心,不客气,我将把
I实例留在
,因为从技术上讲,您可以在x[1]
中使用
“邮件”,而不是命令。