【发布时间】:2020-12-16 10:29:37
【问题描述】:
我有一个名为 df_imdb 的 DataFrame,它有一个名为 Genres 的列,例如,如果我
检索这样的行之一:
df_imdb.loc[3000,'genres']
答案是:
[{'id': 53, 'name': 'Thriller'}, {'id': 28, 'name': 'Action'}, {'id': 9648, 'name': 'Mystery'}]
这是一个字符串,但我怎样才能将它转换为一个实际的列表呢?
【问题讨论】:
-
什么是这个字符串的来源,你应该避免处理这个放在首位,但本质上,你想
eval它,如果这是来自不受信任的输入(例如用户输入),则使用ast.literal_eval -
源是 DataFrame 的列之一,它应该包含一些电影的流派。每一行都是一个字典列表。
-
我不是这个意思。我的意思是为什么会生成这些字符串?
"[{'id': 53, 'name': 'Thriller'}, {'id': 28, 'name': 'Action'}, {'id': 9648, 'name': 'Mystery'}]"不是随机出现的。 -
不,理解它不是字典列表对您来说非常重要。它是一个字符串。理解这一点非常重要。这是根本问题,有些东西正在创建一个恰好代表字典列表而不是字典列表的字符串。这是你应该解决的根本问题。其他方法只是在其上添加 hack,但如果这是您想要的方式,请再次使用
eval或ast.literal_eval。但是您应该解决的真正问题是为什么该字符串首先存在 -
我有一个名为 df_imdb 的 DataFrame,它有一个名为 Genres 的列,例如,如果我检索如下行之一:df_imdb.loc[3000,'genres'],答案将是: "[{'id': 53, 'name': 'Thriller'}, {'id': 28, 'name': 'Action'}, {'id': 9648, 'name': '神秘'} ]",这是一个字符串
标签: python python-3.x string list dictionary