这是我的阵列:
http://imdb.com/title/tt0111161/?ref_=chttp_tt_1|The Shawshank Redemption|1994|USA|1994-10-14|Crime,Drama|142 min|9.3|Frank Darabont|Tim Robbins,Morgan Freeman,Bob Gunton
http://imdb.com/title/tt0068646/?ref_=chttp_tt_2|The Godfather|1972|USA|1972-03-24|Crime,Drama|175 min|9.2|Francis Ford Coppola|Marlon Brando,Al Pacino,James Caan
....., etc. (250 films)
我的代码,它给了我哈希:
file = IO.read("movies.txt")
new_arr = file.split("\n")
new_xd = new_arr.map{ |e| s = e.split("|")
{url: s[0], title: s[1], Year: s[2], Country: s[3], Full_Year: s[4],
Genre: s[5], Time: s[6],Rating: s[7], Director: s[8], Actor: s[9]}
}
我想列出所有独特的导演,并按姓氏的字母顺序对结果进行排序。我很难找到按姓氏排序的方法。有没有人有建议?
答案 0 :(得分:0)
您可以使用此代码获取导演的唯一名称。如果电影可以有多个导演,您可能希望使用split(',')
单独处理它们。
new_xd.map { |movie| movie[:Director].split(',') }.flatten.uniq
答案 1 :(得分:0)
http://ruby-doc.org/core-2.3.1/Enumerable.html#method-i-sort_by可以帮助您:
pry(main)> new_xd.map{|movie| movie[:Director].split(',')}.flatten.uniq.sort_by{|director_full_name| director_full_name.split(' ').last}
=> ["Francis Ford Coppola", "Frank Darabont"]