我试图字典转换成字符串转换词典为字符串蟒蛇
例如:
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'
你真正想要的是** **格式?为什么? –