格式:(UserId->((Movie1Id,Rating),(Movie2Id,Rating)))
我想打印Movie1Id和Movie2Id。
以下代码可以正常工作:
<Window x:Class="OlodimStories.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:OlodimStories"
Title="Olodim Stories"
WindowState="Maximized"
mc:Ignorable="d"
ManipulationStarting="Window_ManipulationStarting"
ManipulationDelta="Window_ManipulationDelta"
ManipulationInertiaStarting="Window_InertiaStarting" Loaded="Window_Loaded">
<Window.Resources>
<MatrixTransform x:Key="InitialMatrixTransform">
<MatrixTransform.Matrix>
<Matrix OffsetX="200" OffsetY="200"/>
</MatrixTransform.Matrix>
</MatrixTransform>
</Window.Resources>
<Grid>
<Canvas Name="rootCanvas" Background="Green" Grid.Row="1" Grid.Column="0"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
<Menu Name="mainMenu" Height="24" VerticalAlignment="Top" HorizontalAlignment="Left" Background="Transparent"
Grid.Row="0" Grid.Column="0">
<MenuItem Header="Меню" FontSize="16">
<MenuItem Header="Открыть" FontSize="16"></MenuItem>
<MenuItem Header="Сохранить" FontSize="16" Click="MenuItem_Click"/>
<MenuItem Name="addImageItem" FontSize="16" Header="Добавить изображение..." Click="AddImageItem_Click"/>
<Separator />
<MenuItem Name="exitApp" Header="Выход" FontSize="16"></MenuItem>
</MenuItem>
</Menu>
</Grid>
</Window>
以下代码无效:
user foreach (x => println (x._2._1))
错误:
val col1 = Map(645-> ((1->3.5),(2->5.2)))
println(col1._2._1)
答案 0 :(得分:3)
如果您需要Map
中的Map
,则应写:
val col1 = Map(645-> Map(1->3.5,2->5.2), 644 -> Map(1->3.5,2->5.2))
col1 foreach (user => user._2 foreach (mov => println(mov._1)))
然后您的类型将为Map[Int, Map[Int, Double]]
。
否则,您的数据类型不是嵌套Map
,而是嵌套Map
的{{1}}中的Tuple
,即`Map [Int,((Int,Double), (Int,Double))]。然后,您必须将内部元组转换为列表,以便对其进行迭代。
Tuple
输出:
val col1 = Map(645-> ((1->3.5),(2->5.2)), 644 -> ((1->3.5),(2->5.2)))
// one liner
col1 foreach (user => user._2.productIterator.map(_.asInstanceOf[(Int, Double)]).toList.foreach(mov => println(mov._1)))
// long version
col1 foreach (user => {
// make list from tuple
val movies = user._2.productIterator.map(_.asInstanceOf[(Int, Double)]).toList
// iterate over list
movies foreach(mov => println(mov._1))
})
针对您的reference。
编辑:提取评分:
1
2
3
4
答案 1 :(得分:1)
因此,您具有这种荒谬的数据表示形式。
val col1 = Map(645-> ((1->3.5),(2->5.2)))
而且,由于某些无法解释的原因,您希望不使用Map
循环等遍历foreach
来打印 Rating 数据。
有两个选择。一种是直接使用已知的键值。
println(col1(645)._1._2 + ", " + col1(645)._2._2) //3.5, 5.2
或者您可以选择head
中的Map
,因为在这种情况下,Map
中只有一个元素。
println(col1.head._2._1._2 + ", " + col1.head._2._2._2) //3.5, 5.2