【发布时间】:2020-04-02 17:10:14
【问题描述】:
我有一个正在枚举的 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 将枚举实体描述为一个元组:(索引,元素)。 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: 根据下面的 cmets,我切换到键上的 for 循环(不需要显式调用),但它仍然不会使用元素 'i' 作为变量。但是,从下面链接的问题中,元素可以用作字典中的键。在将问题减少为“使用列表项作为数据框的名称”并对其进行搜索后,它会出现问题。我也会发布作为答案:
dict2={}
for i in dict1: dict2[i] = pd.DataFrame(dict1[i]['Values'])
..因此名称被保留。实际上,这类似于 Sheri 对列表的回答,但名称保留与 dfs 的关联。可能没有办法使用纯字符串以外的东西来设置变量值,但我会为此开始一个不同的question。
【问题讨论】:
-
你在这行中要做什么
str(j) = somethingElse -
你能和我们分享你的字典吗
-
@sheri,我正在尝试从字典创建 pandas 数据帧,这些字典是大约 4 个键的更高字典的值。它令人困惑,所以我试图笼统地提出这个问题
-
因为您是在 for 循环内动态生成 pandas 数据帧,所以最后当您打印
k时,它会显示最后生成的数据帧。您应该将数据框存储在列表中 -
试试这个
for i,j in enumerate(dict.keys()): j = pd.DataFrame(dict[j]['Values']); listOfFrame.append(j)
标签: python syntax-error