【问题标题】:How to change values of a dict with Python array?如何使用 Python 数组更改 dict 的值?
【发布时间】:2021-04-23 21:45:13
【问题描述】:

我有两个变量,一个字典和一个数组,我希望为每个数组值更改字典值。

字典是这样的:

{'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])}

还有数组:

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.        ]])

我希望它变成这样:

{'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.        ])}

这是怎么做到的?

【问题讨论】:

    标签: python arrays pandas dictionary


    【解决方案1】:

    像下面这样的字典理解呢:

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

    其中d 是原始字典,x 是您发布的numpy 数组。

    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.       ]),}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-17
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多