将字典列表转换为字符串

18 投票
3 回答
24787 浏览
提问于 2025-04-16 13:23

我刚接触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'}]

我想生成一个简单的字符串,里面包含会员的ID,比如:

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

但是我尝试过的所有将列表转换成字符串的方法都失败了,因为里面有字典。

有没有什么建议?

3 个回答

2

访问字典。

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

这些一行代码看起来不错,但初学者可能不太明白。下面我来详细解释一下:

list_of_dicts = (the list you posted)

我们有一个列表,里面的每个成员都是一个字典。这里有一个叫做 list comprehension 的东西:

[expr for d in list_of_dicts]

这就像在说 for d in list_of_dicts ...。在这个过程中,expr 会对每个字典 d 进行计算,然后生成一个新的列表。你也可以用 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 的参数列表里省略了方括号,但这样也能工作。我得查查这个原因,我不知道为什么可以省略。希望这对你有帮助。

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

既然你说你刚开始学Python,我来给你解释一下这个是怎么回事。

str.join()这个方法可以把一个可迭代的对象(比如列表)里的每个元素都连接起来,并且用调用这个方法的字符串作为分隔符。

传给这个方法的可迭代对象是一个生成器表达式(d['memberId'] for d in my_list)。简单来说,这个表达式会给你一个个的元素,就像用列表推导式[d['memberId'] for d in my_list]创建的列表里的元素,但它并不会真的创建那个列表。

撰写回答