2016-11-09 128 views
3

我試圖字典轉換成字符串轉換詞典爲字符串蟒蛇

例如:

a={3:4,5:6} 
s='3 4, 5 6' 

我想要的方式是

s='' 
i=0 
for (k,v) in d.items(): 
    s=s+str(k)+' '+str(v) 
    while i < len(s): 
     if s[i]==str(v) and s[i+1]==str(k): 
      s+=s+s[i]+','+s[i+1] 
+0

你真正想要的是** **格式?爲什麼? –

回答

5

這裏是這樣做的Python化的方式使用list comprehension

s = ', '.join([str(x) + ' ' + str(a[x]) for x in a]) 

輸出:

'3 4, 5 6' 

更新:Julien Spronck提到的,方括號([])是沒有必要的。因此,下面有同樣的效果:

s = ', '.join(str(x) + ' ' + str(a[x]) for x in a) 

Working PythonFiddle

+2

結果你輸入得更快☺ –

+0

你不需要方括號,然後發一個生成器表達式 –

1

我會用一個列表理解如下:

', '.join([str(k) + ' ' + str(v) for k, v in a.items()]) 

舉例說明:

In [1]: a = {3:4, 5:6} 

In [2]: s = ', '.join([str(k) + ' ' + str(v) for k, v in a.items()]) 

In [3]: s 
Out[3]: '3 4, 5 6' 
+0

我實際上比我的回答更喜歡它,因爲它避免了'a [x]'的尷尬使用。 –

+0

@SumnerEvans我更喜歡這種方式,但你的答案實際上比我的更簡潔,而且肯定有什麼可說的。你也可能執行得更好,因爲它沒有額外的函數調用'items()'? – elethan

+1

嗯......我不確定字典是如何存儲在背景中的,我假設它們只是一組元組,所以檢索它們應該相當高效,甚至可能比檢索密鑰更有效,然後檢索值。我對圖書館不太確定,不太確定。 –

3

你可以wr伊特的列表理解表達得到鍵值字符串列表中,然後加入他們的,

>>> d = {3:4,5:6} 
>>> ', '.join('{} {}'.format(k, v) for k, v in d.items()) 
'3 4, 5 6' 

,或者甚至使用repr()注:這是一個黑客,我認爲.join()方法更Python):

>>> repr(d)[1:-1].replace(':', '') 
'3 4, 5 6' 
1

當然是最Python的解決方案是使用列表理解(見@SumnerEvans剩下的),但只是爲具有替代的緣故,我將在這裏張貼此一:

a = {3: 4, 5: 6} 

v = str(a) 
for rep in ['{', '}', ':']: 
    v = v.replace(rep, '') 
print(v) # prints -> 3 4, 5 6 

一切都可以轉換成一個字符串,並作爲一個操縱。這就是在這裏所做的。從dictstring然後鏈接replace方法。

+1

你可以談談這個與列表理解的效率嗎? –

+0

我的預感告訴我列表的理解速度要快得多,但是我現在不能'因爲我在工作'而現在'時間過去了。儘管如此,隨意嘗試。 –

0

你仍然可以有像這樣

s='' 
i=0 
a={3:4,5:6} 
for (k,v) in a.items(): 
    if i < len(a) and s == '': 
     s = s + str(k) + ' '+ str(v) 
    elif i < len(a) and s != '': 
     s += ", " + str(k) + ' '+ str(v) 
    i += 1 
    print(s) 

這應該給你

s='3 4, 5 6'