【问题标题】:getting a sample from a dictionary从字典中获取样本
【发布时间】:2020-08-19 10:46:18
【问题描述】:

我想从保存图像数据的字典中获取样本。 Code 1 展示了一个简单的例子:

代码 1:

import numpy as np

a = dict(data_key_1=np.random.random((512, 512, 3)), 
         data_key_2=np.random.random((512, 512, 3)), 
         data_key_3=np.random.random((512, 512, 3)), 
         data_key_4=np.random.random((512, 512, 3)),
         data_key_5=np.random.random((512, 512, 3)),
         data_key_6=np.random.random((512, 512, 3)),
         data_key_7=np.random.random((512, 512, 3)),
         data_key_8=np.random.random((512, 512, 3)),
         data_key_9=np.random.random((512, 512, 3)),
         data_key_10=np.random.random((512, 512, 3))
        )
sample_keys = ['data_key_2', 'data_key_1', 'data_key_7', 'data_key_4']

所需的输出:

输出应包含由sample_keys 列表中的项目指定的键处的图像,存储在a 字典中。

我的尝试:

我认为它可以像Code 2 中所示的nympy 的精美索引一样完成,但得到了Error 1

代码 2:

a[sample_keys]

错误 1

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-317-bf897da15ff6> in <module>
----> 1 a[sample_keys]

TypeError: unhashable type: 'list'

简单的解决方案:

我意识到我可以使用Code 3 中的 for 循环来实现,但我对更“优雅”(即没有循环,代码行越少)的解决方案感兴趣。

代码 3:

X = []

for image_id in sample_keys:
    X.append(a[image_id])

对于获得所需输出的任何帮助,我将不胜感激。提前致谢。

【问题讨论】:

    标签: python dictionary numpy-ndarray


    【解决方案1】:

    你想一一读取列表值

    a = 'a'
    b = 'b'
    c = 'c'
    data = dict(a=[12,45],b=[45,78,90],c=[11])
    
    sample_keys = [a,c]
    for key in sample_keys:
        print(data[key])
    

    输出

    [12, 45]
    [11]
    

    【讨论】:

      【解决方案2】:

      你不能用字典索引列表。

      for key in sample_keys:
          if key in a:
              a[key]  # Now do any operation with it
      

      编码愉快。

      【讨论】:

        猜你喜欢
        • 2017-02-21
        • 1970-01-01
        • 2020-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多