Python字典推导式随机修改10%值报语法错误如何解决
问题原因
你的字典推导式基础结构认知是正确的,确实和列表推导式逻辑类似,仅需把[]换成{}、内部调整为键:值结构即可,本次报错和推导式基础结构无关,是3个具体逻辑/语法错误导致的:
- 三元表达式语法错误
Python三元表达式必须遵循值1 if 判断条件 else 值2的完整结构,你直接在值表达式末尾加else val不符合语法规则,是直接触发SyntaxError的核心原因。 - 随机判断的位置错误
你把if random.randint(0,9) ==9放在了推导式的末尾过滤位,只有满足条件的键值对才会进入新字典,最终得到的字典会丢失90%的条目,和你「保留所有键、仅修改10%的值」的需求不符。 - 键表达式逻辑错误
你写的新键是programmatic_dict[key],相当于把原字典的值作为新字典的键,和你要保留原键的需求完全不符。
修正后的代码
import random DLM = '~' # deliminator programmatic_dict = { "brand~test": "Ford", "model~test": "Mustang", "year~test": "2019" } print(programmatic_dict) programmatic_dict = { key: val + DLM + key.rsplit(DLM, 1)[1] if random.randint(0,9) == 9 else val for key, val in programmatic_dict.items() } print(programmatic_dict)
效果说明
运行后会保留原字典的所有3个键,约10%概率出现某个值后面拼接了~test后缀,和你给出的预期输出示例完全匹配。
内容的提问来源于stack exchange,提问作者StressedBoi69420
相关产品推荐
相关产品推荐

