python - Top K Frequent Elements?
阿神
阿神 2017-04-17 17:43:28
0
1
434

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

arr1 = [('d', 100), ('c', 99), ('a', 89), ('b', 86)]
arr2 = []
for key in range(len(arr)):
    arr2.append(arr[key][0])

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

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]
阿神
阿神

闭关修行中......

全員に返信(1)
刘奇

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

リーリー

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

リーリー

:

を使用します リーリー

効果:

リーリー

説明:

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート