[英]Change all values of dictionary with tuple keys in python
目前我正在试图改变一个大字典中的所有值(到负)。 我希望声明能合而为一。 我有以下字典示例:
dict = {(0,0): 1, (2, 4): 2}
我想要的是
newdict = {(0,0): -1, (2, 4): -2}
我首先尝试了几种变体
newdict = {x: -x for x in dict}
不过,我总是得到了以下错误
TypeError: bad operand type for unary -: 'tuple'
我需要的东西是能遍历元组键来改变所有的值。
作为@zwer在评论中提到以上,最efficent办法做到这一点只用一条线是使用下面的代码:
newdict = {x: -your_dict[x] for x in your_dict}
这是如何工作的,您首先要创建一个名为newdict
的新字典。
当你声明的字典使用{x: -your_dict[x] for x in your_dict}
这是在大括号内使用for循环(它告诉编译器它是一个字典),该循环将设置所有值。
你得到一个类型错误的原因是因为你不能使用负运算符, -
在一个元组。
您试图将字典中的值设置为旧字典中键的负数,而不是旧字典中值的负数。 因此,您试图将其设置为元组的负数。 元组没有“取反”运算符,因此您会收到TypeError
。
您想要的是,如提到的评论,类似:
newdict = {key:-dict[key] for key in dict}
newdict = {x: -x for x in dict}
x
来自dict
,好吗? 这意味着x
是字典中的键 。 字典中的键是元组 ,所以x
是元组 。 因此-x
是一个错误(作为一元运算符-
未为元组定义)。
您想要的是更改values
,而不是keys
。 因此,一种可能的解决方案可能是
newdict = {x: -dict[x] for x in dict}
因为键x
的原始值为dict[x]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.