如何解决如何从python字典中提取列表并将其作为dict值附加到具有字典列表的列表中?
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'])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。