繁体   English   中英

使用python中的元组键更改字典的所有值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM