如何用Python列表推导式将城市列表转换为城市-州映射字典?
用推导式简化城市到州的映射
你可以用字典推导式(这是列表推导式的字典适配版本,更贴合你生成字典的需求)一步到位完成这个任务,比你原来的写法简洁太多啦。
最优解决方案(字典推导式)
直接在推导式里完成拆分和字典构建,无需中间列表:
cities = ['washington,ct', 'springfield,or', 'riverside,tx', 'franklin,vt', 'lebanon,co', 'dayton,tx', 'las vegas,nm', 'madison,ca', 'georgetown,ct', 'los angeles,tx'] city_state_map = {city: state for city, state in (item.split(',') for item in cities)} print(city_state_map)
如果想用列表推导式过渡
如果你更习惯先通过列表推导式生成拆分后的二元组列表,再转字典,也可以这样写:
split_cities = [item.split(',') for item in cities] city_state_map = dict(split_cities)
这比你原来的for循环+append的写法简洁多了,一行就搞定了拆分列表的生成。
代码解释
- 不管是字典推导式还是列表推导式,核心都是遍历
cities中的每个字符串,用split(',')把它拆分成(城市名, 州名)的二元组 - 字典推导式直接将二元组的第一个元素作为键,第二个作为值,一步生成目标字典
- 列表推导式版本则先把所有二元组收集到列表里,再用
dict()函数把列表转换成字典(因为dict()可以接受由二元组组成的可迭代对象)
对比你原来的代码,推导式把循环逻辑压缩成了更紧凑、可读性更强的表达式,同时还能保持效率。
内容的提问来源于stack exchange,提问作者Soul
相关产品推荐
相关产品推荐

