検索

ホームページ  >  に質問  >  本文

python - Top K Frequent Elements?

[('d', 100), ('c', 99), ('a', 89), ('b', 86)]如何快速得出['d','c','a','b']

1

2

3

4

<code>arr1 = [('d', 100), ('c', 99), ('a', 89), ('b', 86)]

arr2 = []

for key in range(len(arr)):

    arr2.append(arr[key][0])</code>

感觉好low,有什么好的办法吗?
其实在用Python中在刷leetcode来学习
题目:https://leetcode.com/problems/top-k-frequent-elements/

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<code>class Solution(object):

    def topKFrequent(self, nums, k):

        """

        :type nums: List[int]

        :type k: int

        :rtype: List[int]

        """

        items = {}

        for item in nums:

            if items.has_key(item):

                items[item]+=1

            else:

                items[item]=1

        arr1 = sorted(items.iteritems(), key=lambda asd:asd[1], reverse=True)

        arr2 = []

        for key in range(len(arr1)):

            arr2.append(arr1[key][0])

        return arr2[0:k]</code>

阿神阿神2890日前443

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-04-17 17:45:28

    これは非常に簡単です。リスト内包表記を使用するだけです。

    リーリー

    私はあなたの元の質問を見て、簡潔なバージョンを書きました。それを参照してください:
    (Python2.7+、Python3 に適用可能)

    リーリー

    :

    を使用します リーリー

    効果:

    リーリー

    説明:

    Python 2.7 以降のバージョンの場合、collections ライブラリで使用できるクラス Counter があります。
    詳しい操作方法はCounterオブジェクトを参照

    Counter(lst) を使用すると、Counter 内の要素が既にカウントされている lst インスタンスを簡単に取得できます。
    の後は、most_common(k) メソッドを使用して簡単にソートされたタプルのリストを取得できます。最後に、list comprehension を使用して要素自体を削除します。 > リーリー

    返事
    0
  • キャンセル返事