字典中的numpy数组

acruukt9  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(123)

我试着这样转换一个字典:

dicta = {'a':[1,2,3], 'b':[4,5,6,7,8], 'c':[9,10], 'd':[11,12,13,14], 'e':[15,16]}

字符串
数组中(每个键,值一个):

a=([1 ,2 ,3])
  b=([4, 5, 6, 7, 8])
  c=([9, 10])
  d=([11, 12, 13, 14])
  e=([15, 16])


字典可以具有多于或少于5个键、值,并且每个键的值的数量可以与该示例不同。
有什么建议吗?
非常感谢
例如
我已经尝试了各种循环,但没有工作,我找不到任何解决问题的方法。

bttbmeg0

bttbmeg01#

虽然你可以使用exec或eval(另一个答案建议你),但非常不鼓励这样做,因为这些函数执行任意代码的固有危险,并且因为你将失去静态分析能力。
另外,使用vars()等方法也不利于可读性和静态分析
如果你需要访问字典中的元素,你可以使用dicta ['a'],如果你需要转换为数组,它用途:

import numpy as np
dct = {key: np.array(val) for key, val in dicta.items()}

字符串
正如@juanpethes在评论中指出的那样(在我看来,这是迄今为止最好的解决方案)。
对我来说,很难想象一个用例,你真的需要命名变量并动态地从字典中提取它们,但也许你可以澄清这一点,我们可能会找到一个更合适的解决方案。

dvtswwa3

dvtswwa32#

你可以使用tolist()函数如下:

import numpy as np

dicta = {'a': [1, 2, 3], 'b': [4, 5, 6, 7, 8], 'c': [9, 10], 'd': [11, 12, 13, 14], 'e': [15, 16]}

for key, value in dicta.items():
    exec(f"{key} = np.array({value}).tolist()")
    print(f"{key} = {eval(key)}")

字符串

相关问题