0

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?

Luca Lazzati
  • 65
  • 1
  • 10

1 Answers1

3

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.

res is:

{'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.       ]),}
David
  • 8,113
  • 2
  • 17
  • 36