說我有一個這樣的數組:如何按照我想要的方式對這個數組進行排序?
[["bham", "php"],
["auburn", "php"],
["bham", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["mobile", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"],
["tucson", "php"],
["tucson", "php"],
["phoenix", "php"],
["phoenix", "php"],
["phoenix", "php"]]
我希望做的幾件事情:
- 計算已
php
作爲第二個元素的數組數 - 所以`[「bham 「,」php「]將計爲1. - 計算每個第一個元素出現在整個列表中的次數。即
bham
在整個數組中出現了多少次,以及auburn
出現了多少次等等。所以基本上,我想循環這個二維數組,併爲每個孩子的第一個元素,我想檢查看看我是否已經記錄了這個字符串 - 如果我有,然後增加記錄的值,如果我沒有,那麼我爲這個新的字符串創建一個新的條目。
這個特殊的數組是相對平凡的,可以相對容易地進行視覺化處理,但假設我將擁有一個包含數百/數千個元素的數組。
假設每個子數組的兩個元素總是一個單詞也是安全的 - 所以它應該相對容易跟蹤。
我該如何解決這個問題?
啊,我認爲'尺寸'佔了一個塊,並打算在我的答案中使用它,但後來意識到它沒有,但我想只有'數'確實,這就是我想着。 +1 –
我喜歡這個......雖然我有一個問題。你能解釋一下'group_by'嗎?如同,爲什麼你先將它們分組(如果你沒有將它們分組,那麼地圖功能是否仍然有效?那麼你能解釋一下'map'的功能嗎?更具體地說,'v.size'如何知道增量?我知道'v'局部變量映射到塊中數組的第二個元素。我只是對做'v.size'很感興趣,因爲我完全想做它。 – marcamillion
在irb中嘗試一下:'a。GROUP_BY {| X | x [0]} - 它返回一個散列,其中的grouped_by值作爲鍵和匹配數組作爲值。 v.size只是應用於匹配數組的數組大小。 – pguardiario