Python:如何将枚举元素用作字符串



我有一个dict1.keys((的列表,我正在枚举,我想将该元素用作字符串。

for i,j in enumerate(dict1.keys()): str(j) = somethingElse
>>> SyntaxError: can't assign to function call

https://dbader.org/blog/python-enumerate将枚举实体描述为:(index,element(的元组。type(j)<class 'str'>,我可以打印它,但不能用作变量。

编辑:

for i,j in enumerate(dict1.keys()): j = somethingElse

第2版:我认为问题可能出在熊猫身上。第一行行行得通,第二行不行。

for i,j in enumerate(dict1.keys()): list1.append(j)
for i,k in enumerate(list1): k = pd.DataFrame(dict1[k]['Values'])

第3版:第二行确实有效,但仅适用于,最后只有一个df,名称为"k",而不是键。但这就是我要做的。每个dict都使用其密钥名称转换为df

for i,j in enumerate(dict1.keys()): j = pd.DataFrame(dict1[j]['Values'])

第4版:根据下面的评论,我在键上切换到了for循环(不需要显式调用(,但它仍然不会使用元素"I"作为变量。然而,从下面链接的问题来看,元素可以用作dict中的键。在将问题简化为"使用列表项作为数据帧的名称"并进行搜索后,它就崩溃了。我也会发布一个答案:

dict2={}
for i in dict1: dict2[i] = pd.DataFrame(dict1[i]['Values'])

从而保留了名称。事实上,这类似于Sheri对列表的回答,但名称与dfs保持关联。除了普通字符串之外,可能没有其他方法可以设置变量值,但我将开始另一个问题。

使用列表中的元素作为数据帧名称

因为您在for循环中动态生成pandas数据帧,所以在打印j时,它将显示最后生成的数据帧。你应该把你的数据帧存储在列表中尝试使用这个:

listOfFrame = [] 
for j in dict.keys(): 
j = pd.DataFrame(dict[j]['Values'])
listOfFrame.append(j)

事实上,j将是str(或您在dict中使用的任何其他类型的密钥(。

实际的问题是循环体,正如错误消息所说:

str(j) = somethingElse

不是有效的Python。左手边是对str函数的调用,因此不能为其赋值

根据注释,您既不希望enumerate也不希望对dict键进行迭代。相反,您希望迭代其:

dfs = []
for val in dict1.values():
dfs.append(pd.DataFrame(val['Values']))

然而,这通常在Python中没有显式循环的情况下编写,例如使用列表理解:

dfs = [pd.DataFrame(val['Values']) for val in dict1.values()]

从下面链接的问题中,元素可以用作dict中的键。在将问题简化为"使用列表项作为数据帧的名称"并进行搜索后,它就恢复了。我也会发布一个答案:

dict2={}
for i in dict1: dict2[i] = pd.DataFrame(dict1[i]['Values'])

从而保留了名称。事实上,这类似于Sheri对列表的回答,但名称与dfs保持关联。除了普通字符串之外,可能没有其他方法可以设置变量值,但我将开始另一个问题。

使用列表中的元素作为数据帧名称

最新更新