从Python语言中删除列表元素中的撇号

时间:2015-03-25 23:17:51

标签: python list

我在python中通过迭代创建一个列表,我的列表看起来像这样

l = ['x','y','z']

我想让我的列表看起来像没有撇号的元素

l = [x,y,z]

第一种表示法的问题是我的viewkeys()将j作为字符串名称,而不是字典名称。第二种表示法工作正常。这里x,y,z是字典名称。

keys=reduce(lambda i,j: i | j ,[j.viewkeys() for j in l])

我试过strip('\'')但失败了。有什么建议吗?

如果我有:

x = {'a':1, 'b': 2, 'c':5}
y = {'b':10, 'c': 11}
z = {'e':5, 'b': 2}
l=[x,y,z]
keys=reduce(lambda i, j: i | j, [j.viewkeys() for j in l])

这段代码运行正常。但是当我试图迭代地创建l列表时它正在运行

l = ['x','y','z']

并且viewkeys()给出错误:

  

AttributeError:'str'对象没有属性'viewkeys'

2 个答案:

答案 0 :(得分:4)

如果你说,你有

x = {'a': 1, 'b': 2, 'c': 5}
y = {'b': 10, 'c': 11}
z = {'e': 5, 'b': 2}

并将这些词典放入列表

l = [x, y, z]

然后再做

keys = reduce(lambda i, j: i | j, [j.viewkeys() for j in l])
如你所说,

你的代码会运行。

重要的区别是x是一本字典。 'x'是键盘上字符x的字符串文字。它们不可互换。

您收到错误,因为viewkeys词典上使用的方法,没有字符串。您可以在viewkeys上致电x,因为它是字典。您无法在viewkeys上致电'x',因为它是一个字符串。

如果您想获取字典,则需要使用x,而不是'x'

答案 1 :(得分:3)

容器的字符串形式总是使用容器项目的repr(否则模糊不可避免)。

没有人阻止你做自己的格式化,例如:

def showmyway(alist):
    return '[{}]'.format(','.join(str(s) for s in alist))

然后例如

print(showmyway(somelist))

当然,你也会遭受不可避免的歧义:例如,

showmyway(['a', 'b', 'c'])

showmyway(['a,b', 'c'])

将返回完全相同的字符串,尽管列表非常不同。