我正在通过一个练习学习Kaggle的深度学习,这让我很困惑。为了编写一个代码来检查某个东西是否是热狗,这里有一个预测列表,每个元素都是最有可能预测不同图像的内容。所以总的清单是:
[
[('n07697537', 'hotdog', 0.8770528)],
[('n07697537', 'hotdog', 0.9659182)],
[('n07579787', 'plate', 0.7972369)],
[('n07583066', 'guacamole', 0.9996675)]
]
其中一个要素是:
[('n07697537', 'hotdog', 0.9659182)]
所以为了检查图片是否很可能是热狗,我必须得到第二个字段,标签。但是我在尝试访问嵌套列表中的字段时遇到了一些语法问题
因此,我尝试使用print(decoded[0][1])
访问第一个元素的标签作为示例(decoded是外部列表的名称)。这不管用。因此,我检查了样品溶液后,没有弄清楚如何访问元素干净,而不必做一些复杂的事情。
使用的示例代码
labels = [d[0][1] for d in decoded]
这就成功地列出了标签。在检查解决方案之前,我试图做一些类似的事情,但是我有点不喜欢,我通过设置d = decoded[0]
尝试了这个单一版本,我得到了一个长度为1的三个元素的列表,就像前面的元素示例一样。我发现让人困惑的是d[0][1]
可以给我标签,但decoded[0][1]
不能。为什么
如果您想访问第一个元组中第一个元素的标签aka'hotdog',您需要
print(decoded[0][0][1])
,其中decoded[0][0][1]
中的[1]
是元组中的第二个元素(0索引),右手的[0]
是元组本身,左手的[0]
是内部列表一些背景:在您的示例中,实际上有一个包含其他元组列表的列表,显示为
[[()],[()],[()]]
,其中()
是元组,[]
是列表。理论上,在每个内部列表中可以有多个元组,如[[(),(),()],[(),()],[()]]
等。但是,访问元组中的值的方式与使用索引访问列表的方式相同,因此会产生混淆代码
[d[0][1] for d in decoded]
之所以有效,是因为d
实际上只是一个元组列表(尽管在本例中只有一个元组在列表中)您需要处理元组:
此脚本提供:
相关问题 更多 >
编程相关推荐