Python 在字典中执行幂运算
我想要一本新字典,它的值是dict1的平方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 = {'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()}