遍历字典并将值分配给变量

时间:2020-02-24 15:30:22

标签: python dictionary dynamic-programming pyspark-dataframes

我有一个字典“ 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'”错误。

2 个答案:

答案 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返回的两个项目都命名。