如何从存储图像数据的字典中优雅提取指定样本?
如何从存储图像数据的字典中优雅提取指定样本?
我懂你想要避开繁琐循环,从字典里快速揪出指定key对应图像数据的需求!先给你解释下为什么a[sample_keys]会报错:Python字典的索引键必须是可哈希类型,而列表是不可哈希的,直接拿列表当索引自然会抛出TypeError: unhashable type: 'list'的错误。
不用写显式循环的话,有两种非常简洁优雅的Pythonic方案,完全匹配你的需求:
1. 提取为保留键值对的新字典
如果希望得到和原字典结构一致、仅包含指定key的新字典,字典推导式是最优选择:
# 生成仅包含指定键的新字典 selected_data = {key: a[key] for key in sample_keys}
2. 提取为图像数组列表(和你Code3的输出一致)
如果只需要对应值组成的列表,用列表推导式就够了,比手动循环append简洁太多:
# 得到指定键对应图像的列表 X = [a[key] for key in sample_keys]
额外小技巧:避免KeyError
要是担心sample_keys里有不存在于原字典的无效key,可以加个判断过滤掉:
# 只提取原字典中存在的键 selected_data = {key: a[key] for key in sample_keys if key in a}
这些都是Python里的惯用写法,代码简洁易读,完全不需要冗余的循环逻辑,完美替代你原来的实现~
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

