Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典中执行幂运算_Python_Dictionary - Fatal编程技术网

Python 在字典中执行幂运算

Python 在字典中执行幂运算,python,dictionary,Python,Dictionary,我想要一本新字典,它的值是dict1的平方 dict1 = {'A': 2,'B': 4,'C': 6} 试用 dict2 = {'A': 4,'B': 16,'C': 36} 我得到的错误是AttributeError:“float”对象没有属性“keys”。知道我做错了什么吗?您首先需要创建dict2: for k in dict1.keys(): value = dict[k] for k1 in value.keys(): value[k1] =

我想要一本新字典,它的值是dict1的平方

 dict1 = {'A': 2,'B': 4,'C': 6}
试用

 dict2 = {'A': 4,'B': 16,'C': 36}

我得到的错误是AttributeError:“float”对象没有属性“keys”。知道我做错了什么吗?

您首先需要创建
dict2

for k in dict1.keys():
    value = dict[k]
    for k1 in value.keys():
        value[k1] =  value**2     # also tried pow(value,2.)
然后,您可以使用dict1的键和值填充它:

dict2 = {}
或者在一行中:

for key in dict1.keys():
    dict2[key] = dict1[key] ** 2

您可以使用字典理解功能(如python 2)遍历旧字典:

请注意,对于python 3:

>>> dict1 = {'A': 2,'B': 4,'C': 6}
>>> dict2 = {k:v**2 for k,v in dict1.iteritems()}
>>> dict2
{'A': 4, 'C': 36, 'B': 16}
变成

>>> dict2 = {k:v**2 for k,v in dict1.iteritems()}

value
不是字典,所以
keys()
方法不起作用。提醒一下:如果你在dict上调用
.keys()
,你通常会做错事(迭代dict已经给了你它的键,不需要先将它们复制到列表中)。此外,如果您在这样的外观中使用
somedict[key]
,则意味着您实际上希望使用
iteritems()
items()
(Python 3中的
items()
)迭代
key、value
元组!非常感谢。非常有用的答案。我认为最好不要在这里使用
.keys()
。不需要它(实际上,它是
items()
/
iteritems()
的好例子)
>>> dict2 = {k:v**2 for k,v in dict1.iteritems()}
>>> dict2 = {k:v**2 for k,v in dict1.items()}