如何访问转换为元组的字典中的值?该操作是否可行?
问题解答
首先明确:从你生成的t10和t11元组里,无法直接访问原字典的值——因为你用tuple()转换字典时,Python默认只会遍历字典的键,生成的元组只包含这些键,原字典的值根本没被放进元组里,自然没法从元组里拿到值。
为什么会这样?
Python中对字典做迭代操作(比如传给tuple()、list()等),默认行为就是只遍历字典的键。所以你的代码里,tuple({1: 'one', ...})最终得到的是(1,2,3),完全不涉及值的部分。
怎么解决?
如果需要保留键和值的关联,有两种可行方式:
1. 转换时保留键值对
用字典的items()方法,它会返回所有键值对的迭代器,转成元组后就能同时保存键和值:
# 转换字典的键值对为元组 t10 = tuple({1: 'one', 2: 'two', 3: 'three'}.items()) print(t10) # 输出:((1, 'one'), (2, 'two'), (3, 'three')) # 访问值:比如取第一个键值对里的值 print(t10[0][1]) # 输出:'one' # 更方便的方式:把元组转回字典再访问 original_dict = dict(t10) print(original_dict[2]) # 输出:'two'
2. 保留原字典的引用
如果已经生成了只有键的元组,只要还能拿到原字典,就可以用元组里的键去原字典取值:
# 先保存原字典 original_dict = {1: ['red', 'blue', 'green'], 2: ['black', 'white'], 3: ['golden', 'silver']} # 生成键的元组 t11 = tuple(original_dict) # 通过元组里的键访问原字典的值 print(original_dict[t11[1]]) # 输出:['black', 'white']
内容的提问来源于stack exchange,提问作者Amit Agarwal
相关产品推荐
相关产品推荐

