![](/img/trans.png)
[英]Compare Array values and hash keys. If match, sum corresponding hash values
[英]Compare hash values with corresponding array values in Ruby
我已經編寫了腳本,進入了角落,現在需要將哈希值與數組中的相應元素進行比較。
我有兩個具有相同值的“列表”,以不同的方式排序,它們應該相同。 有趣的部分是當他們不這樣做時,所以我需要確定那些情況。 因此,基本上我需要檢查哈希中的第一個鍵值對的第一個值是否與數組的第一個元素相同,同樣,檢查第二個值是否朝向第二個元素,依此類推,對於哈希。
我是Ruby腳本的新手,但是雖然這應該很容易,但是a ...
聽起來您所需要的只是簡單的東西:
hash.keys == array
keys
應以與散列中相同的順序出現,因此將散列的第一個鍵與數組的第一個元素進行比較,將第二個鍵與第二個數組元素進行比較,...
您還可以像這樣將您所說的內容音譯為Ruby:
hash.each_with_index.all? { |(k, _), i| k == array[i] }
或者你可以說:
hash.zip(array).all? { |(k, _), e| k == e }
zip
版本幾乎是each_with_index
版本,其數組索引基本上折疊到了zip
。
從技術上講,不能保證哈希是有序的,因此您假設匹配哈希的“每個”索引處的值可能並不總是成立。 但是,為了回答您的問題,假設h是您的哈希,而a是您的數組:
list_matches = true
h.values.each_with_index {|v, i| list_matches = list_matches && a[i] == v}
如果list_matches不等於true,則兩個集合中的項目不匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.