简体   繁体   English

如何使用 Python 数组更改字典的值?

[英]How to change values of a dict with Python array?

I have two variables a dict and an array and I would like the dictionary values to be changed for each array value.我有两个变量,一个字典和一个数组,我希望为每个数组值更改字典值。

Dict is this:字典是这样的:

{'10.0.1.1': array([0.44739793, 0.45896071]),
 '10.0.1.11': array([0.0651452 , 0.79400788]),
 '10.0.1.17': array([-0.30955505, -0.68114728]),
 '10.0.1.18': array([-0.86424049,  0.36407693]),
 '10.0.1.2': array([ 0.53028569, -0.34903309]),
 '10.0.1.22': array([ 0.82654681, -0.12412811]),
 '10.0.1.23': array([-0.34425123,  0.1718602 ]),
 '10.0.1.25': array([-0.96558349, -0.56542351]),
 '10.0.1.26': array([-0.65562853,  0.03249861]),
 '10.0.1.5': array([ 0.29772161, -0.32568994]),
 '10.0.1.6': array([-0.09182783,  0.60688289]),
 '10.0.1.9': array([ 1.        , -0.25280971]),
 '10.0.11.100': array([0.25305214, 0.15893858]),
 '10.0.12.100': array([0.73537509, 0.38210647]),
 '10.0.13.100': array([-0.79243841, -0.32855154]),
 '10.0.14.100': array([-0.13199944, -0.34254908])}

And Array:和数组:

array([[-0.        ,  0.        ,  0.        , -0.92999877,  2.        ],
       [ 0.72697727, -1.00416248, -0.06716753, -0.16522289, -0.        ],
       [ 0.14544414, -0.04370471,  0.74557808,  0.70755899, -0.        ],
       [ 0.14544414, -0.04370471,  0.74557808,  0.70755899, -0.        ],
       [-0.14544414,  0.04370471, -0.74557808,  0.70755899, -0.        ],
       [-0.14544414,  0.04370471, -0.74557808,  0.70755899,  0.        ],
       [-0.        , -0.        ,  0.        , -0.4311162 , -0.        ],
       [ 0.14544414, -0.04370471,  0.74557808,  0.70755899,  0.        ],
       [ 0.        , -0.        ,  0.        , -0.4311162 , -0.        ],
       [-0.14544414,  0.04370471, -0.74557808,  0.70755899, -0.        ],
       [-0.        ,  0.        ,  0.        , -0.92999877, -2.        ],
       [ 1.18660948,  0.99293878, -0.57256311, -0.16522289, -0.        ],
       [-0.        , -0.        ,  0.        , -0.4311162 , -0.        ],
       [-1.18660948, -0.99293878,  0.57256311, -0.16522289, -0.        ],
       [-0.72697727,  1.00416248,  0.06716753, -0.16522289, -0.        ],
       [-0.        ,  0.        , -0.        , -0.4311162 ,  0.        ]])

I would like it to become like this:我希望它变成这样:

{'10.0.1.1': array([-0.        ,  0.        ,  0.        , -0.92999877,  2.        ]),
 '10.0.1.11': array([ 0.72697727, -1.00416248, -0.06716753, -0.16522289, -0.        ]),
 '10.0.1.17': array([ 0.14544414, -0.04370471,  0.74557808,  0.70755899, -0.        ]),
 '10.0.1.18': array([ 0.14544414, -0.04370471,  0.74557808,  0.70755899, -0.        ]),
 '10.0.1.2': array([-0.14544414,  0.04370471, -0.74557808,  0.70755899, -0.        ]),
 '10.0.1.22': array([-0.14544414,  0.04370471, -0.74557808,  0.70755899,  0.        ]),
 '10.0.1.23': array([-0.        , -0.        ,  0.        , -0.4311162 , -0.        ]),
 '10.0.1.25': array([ 0.14544414, -0.04370471,  0.74557808,  0.70755899,  0.        ]),
 '10.0.1.26': array([ 0.        , -0.        ,  0.        , -0.4311162 , -0.        ]),
 '10.0.1.5': array([-0.14544414,  0.04370471, -0.74557808,  0.70755899, -0.        ]),
 '10.0.1.6': array([-0.        ,  0.        ,  0.        , -0.92999877, -2.        ]),
 '10.0.1.9': array([ 1.18660948,  0.99293878, -0.57256311, -0.16522289, -0.        ]),
 '10.0.11.100': array([-0.        , -0.        ,  0.        , -0.4311162 , -0.        ]),
 '10.0.12.100': array([-1.18660948, -0.99293878,  0.57256311, -0.16522289, -0.        ]),
 '10.0.13.100': array([-0.72697727,  1.00416248,  0.06716753, -0.16522289, -0.        ]),
 '10.0.14.100': array([-0.        ,  0.        , -0.        , -0.4311162 ,  0.        ])}

How could this be done?怎么可能做到这一点?

What about dictionary-comprehension like the following:像下面这样的字典理解怎么样:

res = {k:x[i,:] for i, k in enumerate(d.keys())}

Where d is the original dictionary, and x is the numpy array you posted.其中d是原始字典, x是您发布的numpy数组。

res is: res是:

{'10.0.1.1': array([-0.        ,  0.        ,  0.        , -0.92999877,  2.        ]),
'10.0.1.11': array([ 0.72697727, -1.00416248, -0.06716753, -0.16522289, -0.        ]),
'10.0.1.17': array([ 0.14544414, -0.04370471,  0.74557808,  0.70755899, -0.        ]),
'10.0.1.18': array([ 0.14544414, -0.04370471,  0.74557808,  0.70755899, -0.        ]),
'10.0.1.2': array([-0.14544414,  0.04370471, -0.74557808,  0.70755899, -0.        ]),
'10.0.1.22': array([-0.14544414,  0.04370471, -0.74557808,  0.70755899,  0.        ]),
'10.0.1.23': array([-0.       , -0.       ,  0.       , -0.4311162, -0.       ]),
'10.0.1.25': array([ 0.14544414, -0.04370471,  0.74557808,  0.70755899,  0.        ]),
'10.0.1.26': array([ 0.       , -0.       ,  0.       , -0.4311162, -0.       ]),
'10.0.1.5': array([-0.14544414,  0.04370471, -0.74557808,  0.70755899, -0.        ]),
'10.0.1.6': array([-0.        ,  0.        ,  0.        , -0.92999877, -2.        ]),
'10.0.1.9': array([ 1.18660948,  0.99293878, -0.57256311, -0.16522289, -0.        ]),
'10.0.11.100': array([-0.       , -0.       ,  0.       , -0.4311162, -0.       ]),
'10.0.12.100': array([-1.18660948, -0.99293878,  0.57256311, -0.16522289, -0.        ]),
'10.0.13.100': array([-0.72697727,  1.00416248,  0.06716753, -0.16522289, -0.        ]),
'10.0.14.100': array([-0.       ,  0.       , -0.       , -0.4311162,  0.       ]),}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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