2011-03-09 76 views
4

我對Python很陌生,所以請原諒我,如果這比我看起來更容易。將字典列表轉換爲字符串

我被呈現類型的字典列表如下:

[{'directMember': 'true', 'memberType': 'User', 'memberId': '[email protected]'}, 
{'directMember': 'true', 'memberType': 'User', 'memberId': '[email protected]'}, 
{'directMember': 'true', 'memberType': 'User', 'memberId': '[email protected]'}] 

我想生成memberIds的一個簡單的字符串,如

[email protected][email protected][email protected]

但列表轉換到我甲肝一個字符串的所有方法由於涉及到字典,因此嘗試失敗。

有什麼建議嗎?

回答

11
', '.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]創建的列表中的每個元素,而不實際創建列表。

1

訪問指令。

', '.join(d['memberId'] for d in L) 
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。

+0

Aaaaaaand我看到安德魯已經打敗了我。好吧。 – Vamana