Python字典键值反转疑问:为何实际结果与预期不符?
字典键值反转的疑问解答
现有代码的逻辑
你写的这段代码,本质是实现字典键值的完全互换:
a_dict = {'one': 1, 'two': 2, 'three': 3, 'four': 4} new_dict = {} for key, value in a_dict.items(): new_dict[value] = key # 把原字典的「值」作为新字典的「键」,原字典的「键」作为新字典的「值」 print(new_dict) # 输出: {1: 'one', 2: 'two', 3: 'three', 4: 'four'}
比如原字典里的'one':1,代码执行时会把1作为新字典的键,'one'作为对应的值,所以最终新字典的键是原字典的数值型值,这就是你看到键发生变化的原因。
你预期结果的实现方式
你想要的{'one': 'one', 'two': 'two', ...}并不是键值反转,而是让新字典的键和值都等于原字典的键。可以用两种方式实现:
方式一:字典推导式(更简洁)
a_dict = {'one': 1, 'two': 2, 'three': 3, 'four': 4} new_dict = {key: key for key in a_dict} print(new_dict) # 输出: {'one': 'one', 'two': 'two', 'three': 'three', 'four': 'four'}
方式二:遍历items修改
a_dict = {'one': 1, 'two': 2, 'three': 3, 'four': 4} new_dict = {} for key, value in a_dict.items(): new_dict[key] = key # 键和值都设为原字典的键 print(new_dict)
内容的提问来源于stack exchange,提问作者Amanuel Yohannes
相关产品推荐
相关产品推荐

