Python将变量附加到列表[关闭]
Posted
技术标签:
【中文标题】Python将变量附加到列表[关闭]【英文标题】:Python appending variables to the list [closed] 【发布时间】:2016-08-01 07:00:25 【问题描述】:您好,我似乎无法正常工作,我有一个清单
a = ['Name': 150,'number': 100,'Name': 190, 'number': 200,'Name': 190, 'number': 300]
我需要附加一些变量,但我不断收到错误
a.append ('Name': + Name + ',' + 'number'+ ':' + Number)
TypeError: bad operand type for unary +: 'str'
完整代码:
a = ['Name': 150,'number': 100,'Name': 190, 'number': 200,'Name': 190, 'number': 300]
Name = '150'
number = '10'
a.append ('Name': + Name + ',' + 'number'+ ':' + Number)
def get_number(name):
return lambda x: x['number'] if x['Name']==name else 0
names = sorted(set(map(lambda x: x['Name'], a)))
result = ['Name':name,'number':sum(map(get_number(name), a)) for name in names]
string = str(result)
remove = "[],'"
for i in range (0,len(remove)):
string =string.replace(remove[i],"")
b = string
print b
如何将数据附加到此列表中?
【问题讨论】:
你为什么要把列表转成字符串,然后用字符串操作来删除一个项目?! 我正在转换为所有列表,因为我正在获取名称和数字。需要添加相同的名称,以便我可以看到名称的总数,然后将其添加到 xml 元素中 【参考方案1】:您正在尝试附加字典。这应该有效:
a.append('Name': Name, 'number' : Number)
您采用的写作风格采用了一些非常可爱的直觉,但这不是它的工作原理:) 字典会自动按照其他字典的布局方式设置自己的格式,您只需要为它们提供正确的键和值。
您收到错误的原因是因为您放在前面的:
。这告诉 Python 您正在使用字典 - 但之后您立即输入了 +
。现在 Python 向右看,看到一个字符串,认为“好吧,你正在尝试将两个字符串相加”,向左看,看到一个不是字符串的冒号。 Python 很困惑:它需要一些可以在左边解释为字符串的东西,否则这将不起作用。所以它会抛出一个错误。
编辑:关于一元运算符的更正,请参阅@PM 2Ring 的 cmets!
【讨论】:
“向左看,看到一个冒号,它不是字符串”。不。解析器已经处理了冒号,现在它正在寻找一个有效的表达式来构建一个与'Name'
键相关联的值。它不尝试将 +
解释为求和运算符(字符串表示字符串连接),它将其解释为 unary positive 运算符(如错误消息所述),但是没有为字符串定义运算符。
(cont) 一元正数是为数字定义的,所以我们可以做a = +5
和a = +b
之类的事情,其中b
是一个数字。确实,这没什么用,但它与a = -b
对称,并且在解析器中构建处理一元正数的成本很低。 :)【参考方案2】:
你不需要在这里使用+
:你可以把变量值放在键之后,就像你第一次声明a
的值一样:
a.append ('Name': Name, 'number': Number)
+
用于连接字符串或添加数字,但这里我们尝试创建一个字典。这样做的格式是:
"Key": value, "Another Key": value, ...
+
符号不是必需的,因为您没有加入任何东西,您只是使用 Python 的内置语法创建字典。
【讨论】:
感谢您的解释,这对我帮助很大。【参考方案3】:在您的代码中,错误很明显,TypeError 也清楚地告诉您错误在哪里。您无需在语句中使用“+”。只需将代码编辑成如下所示:
a.append ('Name': Name, 'number': Number)
“+”用于附加字符串,在您的情况下,您将变量分配给一个值。希望能帮助到你。 :)
【讨论】:
以上是关于Python将变量附加到列表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章