我正在解析来自我运行的各种测试的多个数据文件,并且希望将来自每个测试的值分组到属于集合的变量中。例如,一对集合是:
type_GA_RX1 = collections.namedtuple('type_GA_RX1',
['GA_RX1',
'GA_RX1logmag',
'GA_RX1mag',
'GA_RX1ph'])
type_GA_RX2 = collections.namedtuple('type_GA_RX2',
['GA_RX2',
'GA_RX2logmag',
'GA_RX2mag',
'GA_RX2ph'])当我遍历这些文件时,我想做这样的事情:
keys=dataGA.keys() # dictionary of parsed file data
for key in keys:
if len(dataGA[key]) >0:
GA_RX1logmag = np.array(dataGA[key].RX1_log_mag)
GA_RX1mag = 10**(GA_RX1logmag/20)
GA_RX1 = np.array(dataGA[key].RX1_real +1j*dataGA[key].RX1_imag)
GA_RX1ph = np.array(dataGA[key].RX1_phase)然后将这些赋值给集合类型:
type_GA_RX1[key].GA_RX1logmag = GA_RX1logmag
type_GA_RX1[key].GA_RX1mag = GA_RX1mag
type_GA_RX1[key].GA_RX1 = GA_RX1
type_GA_RX1[key].GA_RX1ph = GA_RX1ph但是,我不能索引到一个'type‘对象;我得到这个错误:
type_GA_RX1[key].GA_RX1logmag= GA_RX1logmag
TypeError: 'type' object is not subscriptable我该怎么做呢?或者,这不是我想要做的吗?如何创建集合的数组?
为了清楚起见,dataGA看起来像这样(摘录):
{0: RX1_real RX1_imag RX2_real ... distance RX2_log_mag RX1_log_mag
61 -0.019780 -0.005127 0.010010 ... 1.0 -38.426806 -33.793076
62 -0.018310 -0.010740 0.007812 ... 4.0 -38.190809 -33.462052
63 -0.016600 -0.012450 0.006348 ... 8.0 -38.523323 -33.659638
64 -0.020510 -0.005127 0.010010 ... 18.0 -38.426806 -33.497447
65 -0.015140 -0.013670 0.005127 ... 25.0 -38.488333 -33.808143
.. ... ... ... ... ... ... ...
477 -0.006104 -0.018310 -0.009521 ... 9795.0 -37.416049 -34.288563
478 -0.008545 0.017820 0.013180 ... 9799.0 -37.482664 -34.083018
479 0.000000 0.019290 0.010990 ... 9802.0 -37.584010 -34.293355
495 0.018800 0.004395 -0.005127 ... 9803.0 -36.574736 -34.285753
480 -0.008301 -0.017330 -0.007324 ... 9804.0 -37.062341 -34.326965
[401 rows x 9 columns],
1: RX1_real RX1_imag RX2_real ... distance RX2_log_mag RX1_log_mag
61 -0.019780 -0.005127 0.010010 ... 1.0 -38.426806 -33.793076
62 -0.018310 -0.010740 0.007812 ... 4.0 -38.190809 -33.462052
63 -0.016600 -0.012450 0.006348 ... 8.0 -38.523323 -33.659638发布于 2021-03-03 23:52:04
type_GA_RX1key.GA_RX1logmag = GA_RX1logmag type_GA_RX1key.GA_RX1mag = GA_RX1mag type_GA_RX1key.GA_RX1 = GA_RX1 type_GA_RX1key.GA_RX1ph = GA_RX1ph
这里有两三个问题:
命名元组你从来没有创建过一个type_GA_RX1.
type_GA_RX1[key],就像type_GA_RX1是一个字典一样,但您没有在任何地方创建字典。type_GA_RX1实例中,而是只放入一个值。我想你的意思是:
GA_RX1_instances = {}
for key, data in dataGA.items():
if len(data) > 0:
logmag = data.RX1_log_mag
GA_RX1_instances[key] = type_GA_RX1(
GA_RX1logmag = logmag
GA_RX1mag = 10**(logmag/20)
GA_RX1 = data.RX1_real + 1j*data.RX1_imag
GA_RX1ph = data.RX1_phase
)其中GA_RX1logmag = ...等不是局部变量,而是关键字参数。
https://stackoverflow.com/questions/66460303
复制相似问题