问题描述
z是dict()的列表。
void printList(List &source,bool forward){
ListItr itr;
if(forward)
{
itr = ListItr(source.first());
while(!itr.isPastEnd())
{
cout << itr.retrieve() << " ";
itr.moveForward();
}
}
else
{
itr = ListItr(source.last());
while(!itr.isPastBeginning())
{
cout << itr.retrieve() << " ";
itr.moveBackward();
}
}
cout << endl;
}
我想将所有'loss'的字典值添加到单独的列表中,并类似地添加'val_loss','accuracy','val_accuracy'。 为此,我尝试编写以下python代码:
z = [{'loss': [1,2,2],'val_loss':[2,4,5],'accuracy':[3,8,9],'val_accuracy':[5,9,7]},{'loss': [1,]
但是当我尝试打印列表a = b = c = d = []
for lis in z:
a.append(lis['loss'])
b.append(lis['val_loss'])
c.append(lis['accuracy'])
d.append(lis['val_accuracy'])
的长度时,输出是40而不是10?
我只想将所有print(len(a))
附加到'loss'
中。
解决方法
符号StopAsync
为a = b = c = d = []
分配了一个新列表,然后为d
分配了3个其他变量,因此,您有4个变量指向一个相同的列表,因此将4 *同一列表中有10个项目。
做:
d
您可以使用a,b,c,d = [],[],[]
和map
itemgetter
,
在python中,创建变量时,您只是在创建指向对象的指针,而不是对象的副本。在这种情况下,使用a = b = c = d = []
初始化列表时,实际上是使a,b,c和d指向同一列表,而不是创建四个不同的列表。
采用以下示例:
In [1]: a = b = c = d = []
In [2]: a.append("a")
In [3]: b
Out[3]: ['a']
您实际需要做的是初始化四个不同的列表:
a = []
b = []
c = []
d = []
for lis in z:
a.append(lis['loss'])
b.append(lis['val_loss'])
c.append(lis['accuracy'])
d.append(lis['val_accuracy'])