我試圖字典轉換成字符串轉換詞典爲字符串蟒蛇
例如:
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]
我試圖字典轉換成字符串轉換詞典爲字符串蟒蛇
例如:
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]
這裏是這樣做的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)
結果你輸入得更快☺ –
你不需要方括號,然後發一個生成器表達式 –
我會用一個列表理解如下:
', '.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'
我實際上比我的回答更喜歡它,因爲它避免了'a [x]'的尷尬使用。 –
@SumnerEvans我更喜歡這種方式,但你的答案實際上比我的更簡潔,而且肯定有什麼可說的。你也可能執行得更好,因爲它沒有額外的函數調用'items()'? – elethan
嗯......我不確定字典是如何存儲在背景中的,我假設它們只是一組元組,所以檢索它們應該相當高效,甚至可能比檢索密鑰更有效,然後檢索值。我對圖書館不太確定,不太確定。 –
你可以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'
當然是最Python的解決方案是使用列表理解(見@SumnerEvans剩下的),但只是爲具有替代的緣故,我將在這裏張貼此一:
a = {3: 4, 5: 6}
v = str(a)
for rep in ['{', '}', ':']:
v = v.replace(rep, '')
print(v) # prints -> 3 4, 5 6
一切都可以轉換成一個字符串,並作爲一個操縱。這就是在這裏所做的。從dict
到string
然後鏈接replace
方法。
你可以談談這個與列表理解的效率嗎? –
我的預感告訴我列表的理解速度要快得多,但是我現在不能'因爲我在工作'而現在'時間過去了。儘管如此,隨意嘗試。 –
你仍然可以有像這樣
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'
你真正想要的是** **格式?爲什麼? –