2017-05-02 98 views
1

我有一些數據如下:插入逗號

stats = {'a':1000, 'b':3000, 'c': 100} 

我想每一個元素後插入逗號,在列表理解,見下面的例子:

d = ['a',',','b',',','c',','] 

我怎麼能做到這一點與普通列表理解:下面

找到示例代碼:

[k +','for k,v in stats.iteritems()],但似乎沒有得到所需的結果。

任何幫助表示讚賞 TIA!

+1

和您的預期結果是什麼? – RomanPerekhrest

+1

命令是否重要? –

+2

這是因爲你想連接到一個字符串?我們有'加入'的。 – Elmex80s

回答

3

它可以通過字典的按鍵感應壓扁兩人一組做:

d = [item for key in stats for item in (key, ',')] 

另一種選擇是壓縮鍵和逗號,並把它們連:

d = list(chain(*zip(stats, repeat(',')))) 
+2

不需要'.keys()' –

+0

@Chris_Rands,你是正確的,編輯過。謝謝! – Elisha

0

如果你的目標是來連接的元素爲字符串,你可以使用str.join

>>> stats = {'a':1000, 'b':3000, 'c': 100} 
>>> ','.join(stats) 
'a,c,b' 

如果你真的想要一個結尾逗號,你可以添加:

>>> ','.join(stats) + ',' 
'a,c,b,' 

需要注意的是Python的類型的字典是無序的:你不能確保密鑰在相同的順序輸入出來。爲此,你需要一個清單或OrderedDict

>>> stats = [('a', 1000), ('b', 3000), ('c', 100)] 
>>> ','.join(key for key,value in stats) 
'a,b,c' 
>>> ','.join(key for key,value in stats) + ',' 
'a,b,c,' 

如果由於某種原因,你真的想要的字符列表:

>>> list(','.join(key for key,value in stats) + ',') 
['a', ',', 'b', ',', 'c', ','] 

如果鍵是一個字符長它只會工作。但是,要遍歷字符串中的字符,您甚至不需要將字符串轉換爲列表。