Joh*_*ohn 7 python string dictionary list
我对Python很新,所以请原谅我,如果这比我看起来更容易.
我将收到如下所示的词条列表:
[{'directMember': 'true', 'memberType': 'User', 'memberId': 'address1@example.com'},
{'directMember': 'true', 'memberType': 'User', 'memberId': 'address2@example.com'},
{'directMember': 'true', 'memberType': 'User', 'memberId': 'address3@example.com'}]
Run Code Online (Sandbox Code Playgroud)
我想生成一个简单的memberIds字符串,例如
address1 @ example.com,address2 @ example.com,address3 @ example.com
但是每个将列表转换为我尝试过的字符串的方法都会失败,因为涉及到dicts.
有什么建议?
And*_*ark 14
', '.join(d['memberId'] for d in my_list)
Run Code Online (Sandbox Code Playgroud)
既然你说你是Python的新手,我将解释它是如何工作的.
该str.join()方法组合了iterable的每个元素(如列表),并使用调用该方法的字符串作为分隔符.
提供给方法的iterable是生成器表达式(d['memberId'] for d in my_list).这基本上为您提供了列表推导创建的列表中的每个元素,[d['memberId'] for d in my_list]而无需实际创建列表.
小智 5
这些单行是好的,但初学者可能不会得到它.在这里他们被分解:
list_of_dicts = (the list you posted)
Run Code Online (Sandbox Code Playgroud)
好的,我们有一个列表,每个成员都是一个字典.这是一个list comprehension:
[expr for d in list_of_dicts]
Run Code Online (Sandbox Code Playgroud)
这就像说for d in list_of_dicts ....expr对每个d进行评估,并生成新列表.您也可以选择其中一些if,请参阅文档.
那么,expr我们想要什么?在每个字典中d,我们想要与键一起使用的值'memberId'.那是d['memberId'].所以现在列表理解是:
[d['memberId'] for d in list_of_dicts]
Run Code Online (Sandbox Code Playgroud)
这为我们提供了一个电子邮件地址列表,现在我们将它们与逗号一起使用join(请参阅文档):
', '.join([d['memberId'] for d in list_of_dicts])
Run Code Online (Sandbox Code Playgroud)
我看到其他海报遗漏了[]里面join的参数列表,它有效.不得不看起来,我不知道为什么你可以把它留下来.HTH.