我正在尝试使用字典中的数据类型来确定操作。
我有一个异构类型的字典:字符串,Nonetype和numpy数组。
我现在的代码如下:
for key in pe.sources['Source 1'].keys():
if type(pe.sources['Source 1'][key]) == 'numpy.ndarray':
print("array: %s" %(key))
else:
print('attr: %s' %(key))
然后它返回:
attr: TxData
attr: Trellis
attr: Encoded
attr: coding
attr: location
attr: Message
attr: Pcode
attr: gain
attr: message
attr: chemical
attr: bitrate
但是,如果我这样做:
type(pe.sources['Source 1']['TxData'])
它返回:
numpy.ndarray
为什么我的条件不会触发?
答案 0 :(得分:1)
不要与字符串进行比较,与类型本身进行比较:
>>> import numpy
>>> a = numpy.array([1, 2, 3])
>>> a
array([1, 2, 3])
>>> type(a)
<class 'numpy.ndarray'>
>>> type(a) == 'numpy.ndarray'
False
>>> type(a) == numpy.ndarray
True
str(type(a))
也不会工作,因为你实际获得了字符串:
>>> str(type(a))
"<class 'numpy.ndarray'>"
尽管如此,除非您希望完全该类型,否则通常需要isinstance
,而不是type(something) == something_else
:
>>> isinstance(a, numpy.ndarray)
True
答案 1 :(得分:0)
jasonharper的评论修正了它。
&#34; ANYTHING的类型()永远不可能是&numpy.ndarray&#39; - 函数返回类型,而不是类型的名称。尝试没有这些引号(并且您可能需要将numpy部分更改为np或者您导入模块)。&#34;