2016-11-06 6 views
0

シークエンスが与えられたら、ysはそのシーケンスに登場したキャラクターの数を数える辞書に変換することができるという単純な関数を書く必要があります。Pythonシーケンスを辞書に変換するには?

例:

変換([1,1,1,2,3,3,3,3,5])この辞書を作成してください:{1:3,2:1,3:4、 {'r':2、 'd':1、 'c':1、 'b':2、 'a':5}この辞書を作成する必要があります(「abracadabra」)

あなたはそれだけで辞書内のキーとしてそれぞれ異なる文字を設定し、そのキーの値が文字列に登場した回数に等しい見ることができるように。これは達成するのは簡単なはずですが、私はそれがどのようにできるかまだ分かりません。誰かがこれを行う方法やランダムな文字列を辞書に変換する例を挙げることができますか?私はこれのために準備された少しのコードを持っていますが、それはこの目標を達成しません。

コード:

def convert(ys): 
    dict = {} 
    for y in ys: 
     y += 1 
     for x in ys: 
      x += 1 
      for z in ys: 
       x += 1 
    return dict{x,y,z} 

は基本的に私は何をしようとしていることは、私は新しい辞書の各キーの値としてそれらを設定することができるよう、各文字が順に表示された回数をカウントしています。誰かがこれを行う方法を説明することができたり、役に立つと思われる例を挙げることができます。

+0

あなただけの必要な ' collections.Counter' –

+0

シーケンス内の要素の頻度を数えたいのですか? –

答えて

1

両方の例は、反復可能オブジェクト(stringlist)を使用しているので、あなただけのcollections.Counter必要があります。

import collections 

print(collections.Counter("abracadabra")) 

での結果:

Counter({'a': 5, 'r': 2, 'b': 2, 'c': 1, 'd': 1}) 

と:

print(collections.Counter([1,1,1,2,3,3,3,3,5])) 

利回り:

Counter({3: 4, 1: 3, 2: 1, 5: 1}) 

あなたがdict表現を取得する必要がある場合にだけ実行します。

print(dict(collections.Counter([1,1,1,2,3,3,3,3,5]))) 

これは、辞書をコピーしますが、標準のものが作成されますので、表示は以下の専門である:

{1: 3, 2: 1, 3: 4, 5: 1} 
+0

正面に「カウンター」を置かずに値を返すことはできますか?たとえば、私はテストケースでこのエラーが発生している:convert([2、2、2、2、2、2])は{2:7}でなければならないが、Counter({'2':7} ) – n00bprogrammer22

+0

問題はありません:私の編集を参照してください。 –

+0

ありがとうございましたまさに私が探していたものです – n00bprogrammer22

関連する問題