我有一个字典“ d”,其中有10个键,其中pyspark数据帧为值。
>> d.keys()
dict_keys (['Py1', 'Py2', 'Py3', 'Py4', 'Py7', 'Py8', 'Py15', 'Py20', 'Py21', 'Py22']
我目前正在获取每个键及其值,然后将其分配给变量,如下所示:
df1 = d['Py1']
df2 = d['Py2']
df3 = d['Py3']
.
.
.
df10 = d['Py22']
然后我使用pyspark进行各种操作。没有冗余的最佳方法是什么?这就是我的尝试。
newname = "df"
counter = 1
for key in df_list.keys():
key = newname + str(counter)
counter+=1
print (key)
但是当我执行print(df1)时,出现“未定义名称'df1'”错误。
答案 0 :(得分:0)
是的,只要您全局拥有所有df
,就可以使用globals()
。
newname = "df"
d = {k: globals()[newname + str(counter)] for counter, k in enumerate(d, start = 1)}
答案 1 :(得分:0)
让我们假设您的df
在名为dfs
的列表中。我会结合使用理解和enumerate
函数。
out = {newname + str(i): df for i, df in enumerate(dfs, 1)}
函数enumerate
包装一个可迭代对象并返回元组(index, value)
。当需要同时引用列表中每个元素的值和位置时,这非常方便。另请注意,使用元组拆包为enumerate
返回的两个项目都命名。