2016-11-11 14 views
1

私は、学校でのpythonを使用して開始し、私は問題がソート周波数リストで、リストには、与えられた元の文字列 が含まれてしばらくPythonのソート周波数

を把握しようとしている質問があります関数呼び出し

SortByFrequency(['pie', 6, 'pie', 9, 6, 7, 9, 9] 

は、それは私がPythonのおかげ 私のコードを使用して解決策を見つけることができる方法

[9, 9, 9, 'pie', 'pie', 6, 6, 7] 

を返す必要があります私はすでに辞書を使って何らかの要素を印刷しようとしていました。

my_Dict ={} 
for i in mylist: 
     if i not in my_dict: 
and count the occurrences 
+0

あなたのコードを作ると補助辞書を作成する必要がありますいいえ、意味がありません.... 'if'は決して起こりません、ランダムな'と '、スペーシングの問題 – depperm

+1

あなたは良いスタートを見せましたが、それほど遠くには達しませんでした。並べ替えを忘れてしまった場合は、数を含む辞書を作成してください。 '{'パイ':2、6:2、9:3、7:1}'実際のコードを書いてください。 –

答えて

0

あなたは辞書を作る途中でした。このようにそれを実行します。

if i not in my_dict: 
     my_dict[i] = 0 # define this entry 
    my_dict[i] += 1 # increment it (number of occurrences of i) 

次に、あなただけのキーとして辞書を使用して、それをソートする必要があります。

def sortByFrequency(mylist): 
    my_dict ={} 
    for i in mylist: 
     if i not in my_dict: 
      my_dict[i] = 0 
     my_dict[i] += 1 
    return sorted(mylist, key=lambda i: -my_dict[i]) 

マイナス記号が降順にソートする簡単な方法です。最初の大文字は一般的にクラス名のために予約されているので、最初の小文字を使って関数を書く方が一般的です。

+0

はラムダなしでそれを行うための方法ですが、それが何であるか知っていませんか?コードの最後のスニペットが何をしているのか説明できますか? –

1

これはPythonモジュールを使用することはできないことを学校の課題のいくつかの並べ替えていない場合は、車輪の再発明をしていない、それは

import collections 
def SortByFrequency(lst): 
    return list(collections.Counter(lst).elements()) 

SortByFrequency(['pie', 6, 'pie', 9, 6, 7, 9, 9]) 
# this return [9, 9, 9, 'pie', 'pie', 6, 6, 7] 

これを解決するために私自身の試みをコレクションモジュールを使用して以下のように行うことができます辞書は

def SortByFrequency(mylist): 
    my_dict = {} 
    for i in mylist: 
     my_dict[i] = my_dict.get(i,0) + 1 
    return sorted(sorted(mylist,key=str), key=my_dict.get, reverse=True) 

SortByFrequency(['pie', 6, 'pie', 9, 6, 7, 9, 9]) 
# but this does not guarantee the order when we have multiple values with same frequency 
# this will return [9, 9, 9, 6, 6, 'pie', 'pie', 7] 
+0

はい、私のミス –

0

だろうとあなたはカウンター

list_ = ['pie', 6, 'pie', 9, 6, 7, 9, 9] 
dict_ = {} 
for i in list_: 
    dict_[i] = dict_.get(i, 0) - 1 
# Your dict_ now is following: 
# {6: -2, 7: -1, 9: -3, 'pie': -2} 
sorted(list_, key=dict_.get) 
#=> [9, 9, 9, 'pie', 6, 'pie', 6, 7]