将字符串转换为变量列表

时间:2016-05-05 07:18:41

标签: python numpy

我有一个字符串:

    $fields=array(
    "registration_ids"=>$registration_ids,
    "delay_while_idle" => true,
    "priority" => "high",
    "data"=>$message
);

我也定义了numpy数组:

str='ABCDEFG'

现在我希望能够将字符串转换为具有由这些变量定义的行的numpy数组:

A=numpy.array([1,2,3])
B=numpy.array([2,3,4])

这些是非常长的字符串,我宁愿不使用find和replace类型的操作来遍历它们。

2 个答案:

答案 0 :(得分:1)

列出对胜利的理解:

In[18]: str='ABCDEFG'
In[19]: A=[1,2,3]
B=[2,3,4]
In[20]: [locals().get(x) for x in str if x in locals().keys()]
Out[20]: [[1, 2, 3], [2, 3, 4]]

您应该使用localsglobals,具体取决于您的范围。

答案 1 :(得分:0)

我不推荐您提出的方法。管理变量和变量名称实际上是程序员的工作,而不是程序。

使用DataFrame(即表格)对象,似乎可以更轻松地完成您尝试做的事情。数据帧的每一行都有一个标识符(在你的情况下是'ABCDEFG'中的一个字符)。

我建议您查看pandas库:http://pandas.pydata.org/。它以最少的代码很好地适合您的用例:

import pandas as pd

rownames = list('AB')

dataframe = pd.DataFrame([[1,2,3],[2,3,4]], index=rownames)

dataframe.loc['B'] # Returns [2, 3, 4] as a Series