我已经读了如何获得一个函数名作为字符串?。
如何对变量做同样的事情呢?与函数相反,Python变量没有__name__属性。
换句话说,如果我有一个变量,比如:
foo = dict()
foo['bar'] = 2
我正在寻找一个函数/属性,例如retrieve_name(),以便从这个列表中创建一个DataFrame in Pandas,其中列名由实际字典的名称给出:
# List of dictionaries for my DataFrame
list_of_dicts = [n_jobs, users, queues, priorities]
columns = [retrieve_name(d) for d in list_of_dicts]
如果您已经有了一个数据框架列表,如注释中所述,那么将该列表转换为字符串列表是很容易的。
不是从变量列表到字符串,而是用内置的exec函数结合f-strings(假设变量已经赋值,即vel, vol和area是现有pandas数据框架的变量名)走另一条路,将字符串列表到变量:
If:
dfstr_list = [
'vel',
'vol',
'area'
]
这将遍历列表并使用每个dataframe写入excel,并定义sheetname:
for dfstr in dfstr_list:
if dfstr in globals():
exec(f"{dfstr}.to_excel(writer,sheet_name=dfstr)")
我认为在Python中很难做到这一点,因为一个简单的事实是,你永远不会不知道你正在使用的变量的名称。所以,在他的例子中,你可以这样做:
而不是:
list_of_dicts = [n_jobs, users, queues, priorities]
dict_of_dicts = {"n_jobs" : n_jobs, "users" : users, "queues" : queues, "priorities" : priorities}
每当我必须这样做时,主要是在与前端通信json模式和常量时,我定义了一个类,如下所示
class Param:
def __init__(self, name, value):
self.name = name
self.value = value
然后用名称和值定义变量。
frame_folder_count = Param({'name':'frame_folder_count', 'value':10})
现在可以使用对象访问名称和值。
>>> frame_folder_count.name
'frame_folder_count'