为了账号安全,请及时绑定邮箱和手机立即绑定

Python将复杂的字符串转换为字典列表

Python将复杂的字符串转换为字典列表

喵喔喔 2021-05-21 18:14:58
我需要将此对象的unicode或str转换为dict的列表/数组,输入数据为:[('ALMAFUERTE', 328), ('ALAMAFUERTE', 1), ('ALMFUERTE', 1), ('ALMZFUERTE', 1)]是csv的一列,我通过PANDAS导入,但是我需要类似于dict数组的内容来进行处理[{'ALMAFUERTE': 328}, {'ALAMAFUERTE': 1}, {'ALMFUERTE': 1}, {'ALMZFUERTE': 1}]谢谢。
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

如果"[('ALMAFUERTE', 328), ('ALAMAFUERTE', 1), ('ALMFUERTE', 1), ('ALMZFUERTE', 1)]"输入的是,则需要使用eval()方法将其转换为列表。


>>> l = "[('ALMAFUERTE', 328), ('ALAMAFUERTE', 1), ('ALMFUERTE', 1), ('ALMZFUERTE', 1)]"

>>> eval(l)

[('ALMAFUERTE', 328), ('ALAMAFUERTE', 1), ('ALMFUERTE', 1), ('ALMZFUERTE', 1)]

然后,您可以执行以下操作:


>>> l = [('ALMAFUERTE', 328), ('ALAMAFUERTE', 1), ('ALMFUERTE', 1), ('ALMZFUERTE', 1)]

>>> [{i :j} for i, j in l]

[{'ALMAFUERTE': 328}, {'ALAMAFUERTE': 1}, {'ALMFUERTE': 1}, {'ALMZFUERTE': 1}]

如果您使用的熊猫数据框架结构如下:


>>> l = [('ALMAFUERTE', 328), ('ALAMAFUERTE', 1), ('ALMFUERTE', 1), ('ALMZFUERTE', 1)]

>>> df = pd.DataFrame(l, columns=['name', 'val'])

          name  val

0   ALMAFUERTE  328

1  ALAMAFUERTE    1

2    ALMFUERTE    1

3   ALMZFUERTE    1

你可以这样做:


>>> d = []

>>> for _, row in df.iterrows():

        d.append({row['name']:row['val']})


>>> print(d)

[{'ALMAFUERTE': 328}, {'ALAMAFUERTE': 1}, {'ALMFUERTE': 1}, {'ALMZFUERTE': 1}]


查看完整回答
反对 回复 2021-05-25
  • 1 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号