将dicts列表转换为字符串

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.