我是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。
有什么建议吗?
答案 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)