Project1

标题: 一个哈希表的运算问题。。 [打印本页]

作者: saturnfjh    时间: 2010-10-26 15:44
标题: 一个哈希表的运算问题。。
本帖最后由 saturnfjh 于 2010-10-26 17:10 编辑

hash中如何将value相等的key取出形成一个array?
如hash={a=>x,b=>y,c=>z,d=>x}(x>y>z)
如何获得array=[a,d]?

作者: 六祈    时间: 2010-10-26 16:01
本帖最后由 六祈 于 2010-10-26 16:08 编辑

如果是将value等于某值的key取出,可以这么写:
hash.keys.select{|key| hash[key] == x}

如果是要把重复值的键取出,那显然并不一定只有一个数组。
作者: 八云紫    时间: 2010-10-26 16:01
本帖最后由 铃仙·优昙华院·因幡 于 2010-10-26 16:05 编辑

  1. def get_array(value)
  2.   cache = []
  3.   $hash.eachdo |key, val|
  4.      cache << key if val == value
  5.   end
  6.   return cache
  7. end

  8. def get_arrays
  9.   cache = []
  10.   $hash.values.uniq.each do |n|
  11.       cache << get_array(n)
  12.   end
  13. end
复制代码
渣方法~~
作者: saturnfjh    时间: 2010-10-26 16:26
如果是将value等于某值的key取出,可以这么写:
hash.keys.select{|key| hash[key] == x}

如果是要把重复 ...
六祈 发表于 2010-10-26 16:01

渣方法~~
铃仙·优昙华院·因幡 发表于 2010-10-26 16:01


话说这样,一个敌人有一个仇恨列表(hash={index=>hate_value}),现在要选择最高的仇恨
要是最高的仇恨同时有2个以上,那么就随机选择一个,这个要怎么写哦。。

作者: 六祈    时间: 2010-10-26 16:45
回复 saturnfjh 的帖子

果断在这里回帖刷分
  1. max_value = hash.values.sort[-1]
  2. keys_array = hash.keys.select{|key| hash[key] == max_value}
  3. random_key = keys_array[rand(keys_array.size)]
复制代码

作者: px.凤翔九天    时间: 2010-10-26 22:29
哇咧,都是脚本高手的说,我只能看懂问题,正解吗...一个看不懂。
好好学习脚本吧,看来我的路还有好长..




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1