我有一个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保持关联。除了普通字符串之外,可能没有其他方法可以设置变量值,但我将开始另一个问题。
使用列表中的元素作为数据帧名称