如何将Python字典遍历for循环代码改写为字典推导式
改写方案
- 原代码存在变量引用错误:定义的字典变量名为
Dict(首字母大写),循环中误写为Python内置字典类名dict,直接运行会报错,改写时已修正该问题。 - 原循环没有用到键值对中的值部分,按照Python编码规范,不需要使用的临时变量用
_占位即可。
标准字典推导式写法
字典推导式的设计目的是生成新的键值映射,如果你需要保留「提取每个字典键按+分割后最后一段」的核心逻辑,符合语法规范的写法如下,生成的新字典键和原字典一致,值为对应键分割后得到的尾段:
Dict = {'File': ['lbl101', 0], 'கோப்பு': ['lbl101', 0], 'Alt+1': ['lbl101', 0], 'Accounts': ['lbl102', 1], 'கணக்கியல்': ['lbl102', 1], 'Alt+2': ['lbl102', 1], 'Inventory': ['lbl103', 2], 'சரக்கியல்': ['lbl103', 2], 'Ctrl+3': ['lbl103', 2], 'manufacture': ['lbl104', 3], 'உற்ப்பத்தி': ['lbl104', 3], 'Ctrl+Alt+4': ['lbl104', 3]} # 遍历items时用_占位未使用的值,符合PEP8规范 key_suffix_map = {k: k.split("+")[-1] for k, _ in Dict.items()}
保留原打印逻辑的正确写法
注意:不推荐在推导式中直接编写
print()这类带执行副作用的逻辑,这类写法会生成装满None的无用临时容器,属于滥用推导式的不规范写法,例如[print(k.split("+")[-1]) for k, _ in Dict.items()]虽然能运行,但完全不符合编码规范。
如果要完全等价原代码的打印行为,推荐先生成存储所有尾段的列表,再统一遍历打印:
# 先通过列表推导式拿到所有需要打印的尾段 suffix_list = [k.split("+")[-1] for k, _ in Dict.items()] # 遍历打印,和原逻辑输出完全一致 for suffix in suffix_list: print(suffix)
运行后输出结果和修正变量名后的原代码完全一致:
File கோப்பு 1 Accounts கணக்கியல் 2 Inventory சரக்கியல் 3 manufacture உற்ப்பத்தி 4
内容的提问来源于stack exchange,提问作者tckraomuqnt
相关产品推荐
相关产品推荐

