第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用散列,

使用散列,

哈士奇WWW 2021-03-17 14:14:20
我想創(chuàng)建一個散列(字典)就像這樣:dic = {2 => "ABC", 3 => "DEF"}。在python中,代碼如下所示:text = "abcdef"  for letter in text.lower():    for group, number in dic.items():         if letter in group:對于文本中的每個字母,代碼會在字典中查找相同的字母。如何在紅寶石中做到這一點?有任何想法嗎?
查看完整描述

3 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

這是您的代碼的直接翻譯(順便說一句,它與您的描述不匹配):


hash = {

  "abc" => 1,

  "def" => 2,

}


str = "abcdef"


str.downcase.each_char do |char|

  hash.each_pair do |key, val|

    puts val if key.include?(char)

  end

end



--output:--

1

1

1

2

2

2

但是,這就是O(n ^ 2),這意味著效率低下。您可能最好構造一個更好的哈希值:


hash = {

  "abc" => 1,

  "def" => 2,

}


new_hash = {}


hash.each_pair do |key, val|

  key.each_char do |char|

    new_hash[char] = val

  end

end


p new_hash


--output:--

{"a"=>1, "b"=>1, "c"=>1, "d"=>2, "e"=>2, "f"=>2}

使用該代碼,您遍歷散列一次即可創(chuàng)建新的散列,并且后續(xù)的散列查找非常有效。使用原始代碼,您可以遍歷字符串中每個字母的整個哈希值。


查看完整回答
反對 回復 2021-03-29
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

test = "abcdef"

dic = {2 => "ABC", 3 => "DEF"}

test.each_char { |s|

    dic.each { |key, val|

        puts key if val.include?(s.upcase)          

    }

}

是你的意思嗎?


查看完整回答
反對 回復 2021-03-29
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

text = "abcdef"

hash = {2 => "ABC", 3 => "DEF"}

text.upcase.each_char do |c|

  puts hash.keys.find{|k| hash[k].include?(c.upcase)}

end

輸出:


2個

2個

2個

3

3

3

似乎您想要一個不區(qū)分大小寫的搜索,因此我同時調用upcase了這兩個數據源。如果text保證小寫或哈希值保證大寫,則可以刪除其中之一。與現(xiàn)有答案相比,它的一個好處是它僅進行搜索,直到找到匹配的值為止,我認為這就是您想要的。nil如果找不到匹配的值,則返回搜索。


查看完整回答
反對 回復 2021-03-29
  • 3 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號