You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典列表转等号分隔字符串报错,求正确实现方法

解决列表转指定格式字符串的问题

首先咱们先理清你遇到的两个核心问题:

第一个代码报错的原因

你把列表转成字符串后用ast.literal_eval(s),得到的其实是一个元组(因为字符串是{"name": "Cool", "id": 0}, {"name": "Good", "id": 1}, {"name": "Bad", "id": 3},eval后会被解析成包含三个字典的元组),而元组根本没有items()方法,所以才会抛出AttributeError: 'tuple' object has no attribute 'items'。而且完全没必要把列表转成字符串再转回来——直接遍历原列表就好,这步属于做了无用功。

第二个代码结果不符合预期的原因

你只取了列表里第一个字典的键值对,而且是按key=value的格式拼接,既没处理所有字典,也没按照你想要的id=name顺序来。


正确的解法

你需要遍历列表里的每个字典,取出每个字典的id和name值,按{id}={name}的格式拼接,最后把所有这些字符串用, 连接起来。用Python的f-string可以很直观地实现:

list_of_dictionary = [{"name": "Cool", "id": 0}, {"name": "Good", "id": 1}, {"name": "Bad", "id": 3}]

# 核心代码:遍历每个字典,格式化id=name,再拼接
result = ", ".join([f"{d['id']}={d['name']}" for d in list_of_dictionary])

print(result)
# 输出:0=Cool, 1=Good, 3=Bad

代码解释:

  1. 用列表推导式遍历list_of_dictionary中的每个字典d
  2. 对每个字典,取出d['id'](数字类型会自动转成字符串)和d['name'],用f-string格式化为"id=name"的字符串
  3. 最后用, 作为分隔符,把所有格式化后的字符串连接成一个整体

如果你需要兼容Python 3.5之前的版本(不支持f-string),可以用str.format()替代:

result = ", ".join(["{}={}".format(d['id'], d['name']) for d in list_of_dictionary])

这样就能完美得到你想要的结果啦!

内容的提问来源于stack exchange,提问作者Sirsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:20:19