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

Python3:将字典列表中的指定键转换为小写

嘿,我来帮你把这个问题掰明白~作为Python初学者,踩这种字典推导式的小坑太正常了,别着急!

问题解析与解决方案

1. 你的列表推导式到底做了什么?

先看你写的这段代码:

lower_list = [ { v:k.lower() for k,v in d.items() } for d in books ]

拆解一下逻辑:

  • 外层的[ ... for d in books ]是遍历books里的每一本字典d,这部分是没问题的。
  • 内层的{ v:k.lower() for k,v in d.items() }是问题核心:你把原来字典的值(v)当成了新字典的键,把原来字典的键(k)转小写后当成了新字典的值。

举个具体的例子,拿第一个字典里的{'Type': 'Book'}来说,遍历到这个键值对时,k='Type',v='Book',所以你的推导式会生成{'Book': 'type'}——这就是为什么键值完全颠倒了!

2. 修正后的代码

你真正要做的是:只把键'Type'改成小写的'type',其他键和对应的值都保持不变。对应的字典推导式需要把键和值的位置摆正,只针对目标键做修改:

books = [{'Type': 'Book', 'Date': '2011', 'Publication Year': '2011', 'Place Published': 'New York', 'Publisher': 'Simon & Schuster', 'Author': 'Walter Isaacson', 'ISBN': '978-1-4516-4853-9', 'Title': 'Test Steve Jobs'}, {'Type': 'Book', 'Date': '2001', 'Publication Year': '2001', 'Place Published': 'Oxford', 'Publisher': 'Oxford University press', 'Author': 'Peter Hall', 'ISBN': '978-0-19-924775-2', 'Title': 'Test Varieties of capitalism: the institutional foundations of comparative advantage'}]

# 修正后的列表推导式
fixed_books = [
    {'type' if k == 'Type' else k: v for k, v in d.items()}
    for d in books
]

print(fixed_books)

运行这段代码后,每个字典里的'Type'都会变成'type',其他键值对完全保留,输出就是你预期的[{'type': 'Book', ...}, ...]啦。

如果以后你需要把所有键都转小写,也可以用{k.lower(): v for k, v in d.items()},但这次你只需要改特定键,所以上面的写法更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:52:45