如何用ruby统计数组或哈希中不同元素的个数

Python013

如何用ruby统计数组或哈希中不同元素的个数,第1张

得到不同数据的值:

%w(a b c a c d).uniq

得到各个元素出现的个数:

count_hash = {}

%w(a b c a c d).each do |item|

key = item.to_sym

if count = count_hash[key]

count_hash[key] = count + 1

else

count_hash[key] = 1

end

end

       DATAS  SEGMENT

       ARRAY  DW        1234,2345,5678,7890,3455,1233,0ABCDH,0FFFFH

          N1  DW        ($-ARRAY)/2

      NUMBER  DW        ($-ARRAY)/2 DUP(?)

          N2  DW        0

       DATAS  ENDS

       

       CODES  SEGMENT

              ASSUME    CS:CODES,DS:DATAS

      START:  MOV       AX,DATAS

              MOV       DS,AX

               查找奇数              

              LEA       SI,ARRAY

              LEA       DI,NUMBER

              MOV       CX,N1

         @1:

              MOV       AX,[SI]

              MOV       BX,AX

              SHR       BX,1

              JC        @2

              JMP       @3

         @2:

              MOV       [DI],AX

              INC       WORD PTR N2

              ADD       DI,2

         @3:

              ADD       SI,2

              LOOP      @1

               输出奇数 

              LEA       SI,NUMBER

              MOV       CX,N2

         @4:

              LODSW

              CALL      DISPAX

              LOOP      @4

              

              MOV       AX,4C00H

              INT       21H

==============================================

      DISPAX  PROC      NEAR

              PUSH      BX

              PUSH      CX

              PUSH      DX

              PUSH      SI

              PUSH      DS

              PUSH      AX

              MOV       AH,2

              MOV       DL,' '

              INT       21H

              POP       AX

              PUSH      CS

              POP       DS

              MOV       BYTE PTR NZ,0

              PUSH      AX

              LEA       SI,DIVARR

              MOV       CX,5

        @@1:

              POP       AX

              MOV       DX,0

              MOV       BX,[SI]

              DIV       BX

              PUSH      DX

              CMP       AL,0

              JNE       @@2

              CMP       BYTE PTR NZ,1

              JE        @@2

              CMP       CX,1

              JE        @@2

              MOV       DL,20H

              JMP       @@3

        @@2:

              ADD       AL,30H

              MOV       DL,AL

              MOV       BYTE PTR NZ,1

        @@3:

              MOV       AH,2

              INT       21H

              INC       SI

              INC       SI

              LOOP      @@1

              POP       DX

              POP       DS

              POP       SI

              POP       DX

              POP       CX

              POP       BX

              RET

      DIVARR  DW        10000,1000,100,10,1

          NZ  DB        0

      DISPAX  ENDP

=============================================                    

       CODES  ENDS

              END       START

数组

array = [[1],[2],[3],[0],[1,2],[1,0],[0,1]]

希望排序整个数组,先按照数组 元素个数 ,如果个数相同再 按照首个元素大小

array.sort_by {|a| [a.size, a[0]] }