普通Scala过滤器不是';琐碎的

普通Scala过滤器不是';琐碎的,scala,Scala,好吧,这应该是个小问题,但我已经试着让它工作了好几个小时了 我有一个列表(Tuple2(String,Int)),其中包含以下数据: ('PAUL ANKA',0) ('PAUL ANKA',0) ('P. ANKA /G. HAMILTON /J. NASH',0) ('PAUL ANKA',0) ('PAUL ANKA',0) ('PAUL ANKA',1) ('PAUL ANKA',0) ('PAUL ANKA',0) ('PAUL ANKA',0) ('PAUL ANKA',0) 我只

好吧,这应该是个小问题,但我已经试着让它工作了好几个小时了

我有一个
列表(Tuple2(String,Int))
,其中包含以下数据:

('PAUL ANKA',0)
('PAUL ANKA',0)
('P. ANKA /G. HAMILTON /J. NASH',0)
('PAUL ANKA',0)
('PAUL ANKA',0)
('PAUL ANKA',1)
('PAUL ANKA',0)
('PAUL ANKA',0)
('PAUL ANKA',0)
('PAUL ANKA',0)
我只想过滤第二个元素==1的元组

这似乎微不足道:

mylist.filter(_._2 == 1)
但是没有,所以我试过了

mylist.filter(x => x._2 == 0)
没有快乐。这些例子中的每一个都应该产生一个
列表(('Paul Anka',1))
,但是列表是空的

这:

这是一种身份

我正在为这个扯头发

更新:

好的,这很有趣。上面的示例列表是scala的输出

使用prayagupta的答案,我得到

@ val data = List(("Charlie Martin", 99), ("prayagupd", 100), ("PAUL ANKA", 1))
data: List[(String, Int)] = List(("Charlie Martin", 99), ("prayagupd", 100), ("PAUL ANKA", 1))

@ println(data)
List((Charlie Martin,99), (prayagupd,100), (PAUL ANKA,1))
请注意,我的示例以单引号打印这些字符串(或假定的字符串)。

对我来说效果很好

val listOfTuples = List(("PAUL ANKA",0),
("PAUL ANKA",0),
("P. ANKA /G. HAMILTON /J. NASH",0),
("PAUL ANKA",0),
("PAUL ANKA",0),
("PAUL ANKA",1),
("PAUL ANKA",0),
("PAUL ANKA",0),
("PAUL ANKA",0),
("PAUL ANKA",0))

println(listOfTuples.filter(_._2 == 1))


确保您的实际数据不是单引号。

您的代码看起来正确,但确保您的初始数据正确且类型为
List[Tuple2[String,Int]]

试试scala REPL

scala> val data = List(("Charlie Martin", 99), ("prayagupd", 100), ("PAUL ANKA", 1))
data: List[(String, Int)] = List((Charlie Martin,99), (prayagupd,100), (PAUL ANKA,1))

scala> data.filter{case (name, age) => age == 1 }
res1: List[(String, Int)] = List((PAUL ANKA,1))
另辟蹊径,

scala> data.filter{_._2 == 1 }
res2: List[(String, Int)] = List((PAUL ANKA,1))
如果您从文件中读取数据,那么您的数据结构可能是
List[(String,String)]
,其中
“1”==1
为false

scala> val data = List(("Charlie Martin", "99"), ("prayagupd", "100"), ("PAUL ANKA", "1"))
data: List[(String, String)] = List((Charlie Martin,99), (prayagupd,100), (PAUL ANKA,1))

scala> data.filter{_._2 == 1 }
res4: List[(String, String)] = List()

为什么不在设置mylist时向其添加一个类型注释(例如,
mylist:List[Tuple2[String,Int]]=…
),只是为了检查类型是否正确。宾果。我被Scala展示这些东西的反常方式愚弄了。我的条目确实是
Tuple2[String,String]
——我确信我已经将第二个元素转换为Int——字符串的周围有单引号,因为字符串的周围确实有单引号。在字符串中。
scala> val data = List(("Charlie Martin", "99"), ("prayagupd", "100"), ("PAUL ANKA", "1"))
data: List[(String, String)] = List((Charlie Martin,99), (prayagupd,100), (PAUL ANKA,1))

scala> data.filter{_._2 == 1 }
res4: List[(String, String)] = List()