字典的平方值

时间:2016-08-21 17:46:29

标签: python dictionary

我正在使用Python 2.7,仍在学习字典。我专注于为字典进行数值计算,需要一些帮助。

我有一本字典,我想对其中的值进行平方:

 dict1 = {'dog': {'shepherd': 5,'collie': 15,'poodle': 3,'terrier': 20},
'cat': {'siamese': 3,'persian': 2,'dsh': 16,'dls': 16},
'bird': {'budgie': 20,'finch': 35,'cockatoo': 1,'parrot': 2}

我想:

 dict1 = {'dog': {'shepherd': 25,'collie': 225,'poodle': 9,'terrier': 400},
'cat': {'siamese': 9,'persian': 4,'dsh': 256,'dls': 256},
'bird': {'budgie': 400,'finch': 1225,'cockatoo': 1,'parrot': 4}

我试过了:

 dict1_squared = dict**2.

 dict1_squared = pow(dict,2.)

 dict1_squared = {key: pow(value,2.) for key, value in dict1.items()}

我的尝试没有任何成功。

5 个答案:

答案 0 :(得分:5)

我可能更喜欢循环的其中一种情况:

for d in dict1.values():
    for k in d:
        d[k] **= 2

答案 1 :(得分:4)

因为你有嵌套的词典,所以看:

results = {}

for key, data_dict in dict1.iteritems():
    results[key] = {key: pow(value,2.) for key, value in data_dict.iteritems()}

答案 2 :(得分:3)

你非常接近字典理解。问题是解决方案中的 value 本身就是字典,所以你也必须迭代它。

dict1_squared = {key: {k: pow(v,2) for k,v in value.items()} for key, value in dict1.items()}

答案 3 :(得分:1)

基于您的问题,我认为通过教程是一个好主意。 Here is one from tutorialspoint。你说你正试图对字典进行调整,但这不是你想要做的。您正试图在字典中对值进行平方。要对字典中的值进行平方,首先需要获取值。 Python的for循环可以帮助解决这个问题。

# just an example
test_dict = {'a': {'aa': 2}, 'b': {'bb': 4}}

# go through every key in the outer dictionary
for key1 in test_dict:

    # set a variable equal to the inner dictionary
    nested_dict = test_dict[key1]

    # get the values you want to square
    for key2 in nested_dict:

        # square the values
        nested_dict[key2] = nested_dict[key2] ** 2

答案 4 :(得分:0)

如果您的结构总是相同,您可以这样做:

for k,w in dict1.items():
    for k1,w1 in w.items():
        print w1, pow(w1,2)

20 400
1 1
2 4
35 1225
5 25
15 225
20 400
3 9
3 9
16 256
2 4
16 256