亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: [練習(xí)] 數(shù)據(jù)分組 [打印本頁]

作者: rubyish    時(shí)間: 2013-12-01 04:35
標(biāo)題: [練習(xí)] 數(shù)據(jù)分組
本帖最后由 rubyish 于 2013-12-01 01:19 編輯

問題:
有一組數(shù)據(jù):

1   A   6
1   B   4
1   P   3.5
1   A   5
1   P   4
1   P   4
1   A   4
1   P   4
2   P   3.5
2   A   3.5
2   A   3
2   B   3.5
2   P   3.2
2   B   3.4
2   P   3.1
2   P   3.6

按第一列分組找到所有含有P的行并且找到往上數(shù)最近的A和B
(如果沒有找到,則賦空值),數(shù)據(jù)輸出如下:

1   P  3.5    6    4
1   P  4       5    4
1   P  4       5    4
1   P  4       4    4
2   P  3.5      
2   P  3.2    3    3.5
2   P  3.1    3    3.4
2   P  3.6    3    3.4

作者: rubyish    時(shí)間: 2014-01-20 03:09
v1:~
  1. #!/usr/bin/ruby -w

  2. hAB = Hash.new {|h, k| h[k] = {} }
  3. DATA.each do |l|
  4.   k, abp, v = l.split
  5.   if abp == ?P
  6.     puts [k, abp, v, hAB[k][?A], hAB[k][?B]] * ?\t
  7.   else
  8.   hAB[k][abp] = v
  9.   end
  10. end

  11. __END__
  12. 1   A   6
  13. 1   B   4
  14. 1   P   3.5
  15. 1   A   5
  16. 1   P   4
  17. 1   P   4
  18. 1   A   4
  19. 1   P   4
  20. 2   P   3.5
  21. 2   A   3.5
  22. 2   A   3
  23. 2   B   3.5
  24. 2   P   3.2
  25. 2   B   3.4
  26. 2   P   3.1
  27. 2   P   3.6
復(fù)制代碼

作者: ddd010    時(shí)間: 2014-01-21 21:38
  1. hAB = Hash.new {|h, k| h[k] = {} }
復(fù)制代碼
lz這行代碼是表示Hash的值是Hash?
  1. h[k] = {}
復(fù)制代碼
奇怪。。
作者: rubyish    時(shí)間: 2014-01-22 00:46
是Hash~
try
  1. #!/usr/bin/ruby -w
  2. hAB = Hash.new {|h, k| h[k] = {} }
  3. DATA.each do |l|
  4.   k, abp, v = l.split
  5.   unless abp == ?P
  6.     hAB[k][abp] = v
  7.     p hAB
  8.   end
  9. end

  10. __END__
  11. 1   A   6
  12. 1   B   4
  13. 1   P   3.5
  14. 1   A   5
  15. 1   P   4
  16. 1   P   4
  17. 1   A   4
  18. 1   P   4
  19. 2   P   3.5
  20. 2   A   3.5
  21. 2   A   3
  22. 2   B   3.5
  23. 2   P   3.2
  24. 2   B   3.4
  25. 2   P   3.1
  26. 2   P   3.6
復(fù)制代碼
{"1"=>{"A"=>"6"}}
{"1"=>{"A"=>"6", "B"=>"4"}}
{"1"=>{"A"=>"5", "B"=>"4"}}
{"1"=>{"A"=>"4", "B"=>"4"}}
{"1"=>{"A"=>"4", "B"=>"4"}, "2"=>{"A"=>"3.5"}}
{"1"=>{"A"=>"4", "B"=>"4"}, "2"=>{"A"=>"3"}}
{"1"=>{"A"=>"4", "B"=>"4"}, "2"=>{"A"=>"3", "B"=>"3.5"}}
{"1"=>{"A"=>"4", "B"=>"4"}, "2"=>{"A"=>"3", "B"=>"3.4"}}

作者: rubyish    時(shí)間: 2014-01-22 00:46
是Hash~
try
  1. #!/usr/bin/ruby -w
  2. hAB = Hash.new {|h, k| h[k] = {} }
  3. DATA.each do |l|
  4.   k, abp, v = l.split
  5.   unless abp == ?P
  6.     hAB[k][abp] = v
  7.     p hAB
  8.   end
  9. end

  10. __END__
  11. 1   A   6
  12. 1   B   4
  13. 1   P   3.5
  14. 1   A   5
  15. 1   P   4
  16. 1   P   4
  17. 1   A   4
  18. 1   P   4
  19. 2   P   3.5
  20. 2   A   3.5
  21. 2   A   3
  22. 2   B   3.5
  23. 2   P   3.2
  24. 2   B   3.4
  25. 2   P   3.1
  26. 2   P   3.6
復(fù)制代碼
{"1"=>{"A"=>"6"}}
{"1"=>{"A"=>"6", "B"=>"4"}}
{"1"=>{"A"=>"5", "B"=>"4"}}
{"1"=>{"A"=>"4", "B"=>"4"}}
{"1"=>{"A"=>"4", "B"=>"4"}, "2"=>{"A"=>"3.5"}}
{"1"=>{"A"=>"4", "B"=>"4"}, "2"=>{"A"=>"3"}}
{"1"=>{"A"=>"4", "B"=>"4"}, "2"=>{"A"=>"3", "B"=>"3.5"}}
{"1"=>{"A"=>"4", "B"=>"4"}, "2"=>{"A"=>"3", "B"=>"3.4"}}

作者: rubyish    時(shí)間: 2014-01-22 01:05
or
  1. #!/usr/bin/ruby -w
  2. hAB = {}
  3. key = "xyz"

  4. DATA.each do |l|
  5.   k, abp, v = l.split
  6.   key, hAB = k, {} if k != key
  7.   if abp == ?P
  8.     puts [k, abp, v, hAB[?A], hAB[?B]] * ?\t
  9.   else
  10.     hAB[abp] = v
  11.   end
  12. end

  13. __END__
  14. 1   A   6
  15. 1   B   4
  16. 1   P   3.5
  17. 1   A   5
  18. 1   P   4
  19. 1   P   4
  20. 1   A   4
  21. 1   P   4
  22. 2   P   3.5
  23. 2   A   3.5
  24. 2   A   3
  25. 2   B   3.5
  26. 2   P   3.2
  27. 2   B   3.4
  28. 2   P   3.1
  29. 2   P   3.6
復(fù)制代碼

作者: ddd010    時(shí)間: 2014-01-27 14:48
rubyish 發(fā)表于 2014-01-22 00:46
是Hash~
try{"1"=>{"A"=>"6"}}
{"1"=>{"A"=>"6", "B"=>"4"}}


在學(xué)習(xí)ruby時(shí),我常常被java的編程思想影響,編寫代碼又有c的編程習(xí)慣。

唉。。
作者: 諸葛修勤    時(shí)間: 2015-06-21 17:07
學(xué)習(xí), 看不太懂




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2