如何将文件中的所有行读入元组?

时间:2016-10-09 03:14:24

标签: elixir

我需要随机访问英文词典文件中的所有单词(“/ usr / share / dict / words”),其中每个单词都在一行中。

现在,我想以随机顺序访问所有这些单词,为此我想将该文件读入允许随机访问的元组。

我知道我可以将文件读入这样的列表:

words = 
  File.stream!("/usr/share/dict/words") 
  |> Stream.map(&String.trim_trailing/1) 
  |> Enum.to_list

但这不允许我以随机顺序访问这些单词。我怎么能把文件读成一个元组?

(或者,如果有其他方法可以做到这一点,即按随机顺序阅读这些文字,请告诉我)

2 个答案:

答案 0 :(得分:1)

List.to_tuple将列表转换为元组,因此以下工作:

words = 
  File.stream!("/usr/share/dict/words") 
  |> Stream.map(&String.trim_trailing/1) 
  |> Enum.to_list
  |> List.to_tuple

答案 1 :(得分:1)

如果您想以随机顺序使用它们,那么:

words = 
  File.stream!("/usr/share/dict/words") 
  |> Stream.map(&String.trim_trailing/1) 
  |> Enum.to_list
  |> Enum.shuffle