将dicts列表转换为字符串

时间:2011-03-09 23:46:57

标签: python string list dictionary

我是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'}]

我想生成一个简单的memberIds字符串,例如

  

address1@example.com,   address2@example.com,   address3@example.com

但是每个将列表转换为我尝试过的字符串的方法都会失败,因为涉及到dicts。

有什么建议吗?

3 个答案:

答案 0 :(得分:12)

', '.join(d['memberId'] for d in my_list)

既然你说你是Python的新手,我将解释它是如何工作的。

str.join()方法组合了iterable的每个元素(如列表),并使用调用该方法的字符串作为分隔符。

提供给方法的iterable是生成器表达式(d['memberId'] for d in my_list)。这基本上为您提供列表推导[d['memberId'] for d in my_list]创建的列表中的每个元素,而不实际创建列表。

答案 1 :(得分:5)

这些单行可以,但初学者可能不会得到它。在这里他们被分解了:

list_of_dicts = (the list you posted)

好的,我们有一个列表,每个成员都是一个字典。这是一个list comprehension

[expr for d in list_of_dicts]

这就像说for d in list_of_dicts ...。对每个d评估expr并生成新列表。您也可以使用if选择其中一些,请参阅文档。

那么,我们想要什么expr?在每个字典d中,我们需要与密钥'memberId'一起使用的值。那是d['memberId']。所以现在列表理解是:

[d['memberId'] for d in list_of_dicts]

这为我们提供了一个电子邮件地址列表,现在将它们与逗号一起使用,我们使用join(参见文档):

', '.join([d['memberId'] for d in list_of_dicts])

我看到其他海报遗漏了join的参数列表中的[],并且它有效。不得不看起来,我不知道为什么你可以把它留下来。 HTH。

答案 2 :(得分:1)

访问dicts。

', '.join(d['memberId'] for d in L)