[英]Python: How can I use an enumerate element as a string?
我有一个正在枚举的 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
EDIT2:我认为问题可能出在熊猫上。 第一行有效,第二行无效。
for i,j in enumerate(dict1.keys()): list1.append(j)
for i,k in enumerate(list1): k = pd.DataFrame(dict1[k]['Values'])
EDIT3:第二行确实有效,但仅以一个 df 结束,名称为“k”而不是键。 但继承人什么林试图。 每个 dict 使用其键名转换为 df:
for i,j in enumerate(dict1.keys()): j = pd.DataFrame(dict1[j]['Values'])
EDIT4:根据下面的评论,我切换到键上的 for 循环(不需要显式调用),但它仍然不会使用元素 'i' 作为变量。 但是,从下面链接的问题来看,元素可以用作字典中的键。 在将问题简化为“使用列表项作为数据框的名称”并进行搜索后,它会出现问题。 我也会发布作为答案:
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()]
从下面链接的问题中,元素可以用作字典中的键。 在将问题简化为“使用列表项作为数据框的名称”并进行搜索后,它会出现问题。 我也会发布作为答案:
dict2={}
for i in dict1: dict2[i] = pd.DataFrame(dict1[i]['Values'])
..因此保留了名称。 实际上,这类似于 Sheri 对列表的回答,但名称保留与 dfs 的关联。 可能没有办法使用普通字符串以外的其他东西来设置变量值,但我将为此提出一个不同的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.