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

Python嵌套字典推导式添加条件:解决字符串遍历错误问题

解决字典推导式中字符串被拆分遍历的问题

给定字典:

d = {'int': ["unit", "bool"], 'timestamp': "pruct"}

如果直接用嵌套字典推导式反转键值:

# 错误写法
wrong_result = {v: k for k, vals in d.items() for v in vals}

会得到错误结果——因为字符串"pruct"会被当作可迭代对象逐个字符遍历,输出类似:

{'u': 'int', 'n': 'int', 'i': 'int', 't': 'int', 'b': 'int', 'o': 'int', 'l': 'int', 'p': 'timestamp', 'r': 'timestamp', 'c': 'timestamp', 't': 'timestamp'}

正确解法

在遍历值之前添加条件判断:如果值是字符串,就把它转为单元素列表;如果是列表这类可迭代对象,直接使用。对应的推导式如下:

d = {'int': ["unit", "bool"], 'timestamp': "pruct"}
correct_result = {v: k for k, vals in d.items() for v in (vals if isinstance(vals, (list, tuple)) else [vals])}

逻辑解释

  • isinstance(vals, (list, tuple)) 判断当前值是否是列表或元组(可根据需求扩展其他可迭代类型)
  • 如果是列表/元组,直接遍历其中的元素
  • 如果是字符串,将其包装为单元素列表 [vals],确保遍历的时候取到的是整个字符串,而非单个字符

运行后得到目标输出:

{'unit': 'int', 'bool': 'int', 'pruct': 'timestamp'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:35:24