2016-09-14 8 views
0

どこから始めるべきか分かりません... item()は辞書を与えますが、私はそれを望んでいません。一意の各文字列を持つタプルのリストを返すにはどうしたらいいですか?

私はリストをループする必要があると言うでしょう....

してください私が始めることができるように誰かが私にいくつかのヒントを与えます!

EDIT:

count_of_names(names) 

    counts_of_names(['John', John', 'Catherine', 'John', 'Christopher', 'Catherine']' 

が出力:

[('Catherine', 2), ('Christopher', 1), ('John', 3)] 
+2

サンプル入力と所望の出力してください –

+0

count_of_names(名前は)だろう関数名... counts_of_names(['John'、John '、' Catherine '、' John '、' Christopher '、' Catherine ']'の出力は '[(' Catherine '、2)、( 'Christopher'、1)、( 'John'、3)] –

答えて

0

あなたはこれを達成するためにcollections.Counter()を使用することができます。例:

>>> x = [1,2,3,4,1,1,2,3] 
>>> my_list = Counter(x).items() 
>>> my_list 
[(1, 3), (2, 2), (3, 2), (4, 1)] 

# In order to sort the list base based on value of tuple at index `1` and then index `0` 
>>> sorted(my_list, key=lambda x: (x[1], x[0])) 
[(4, 1), (2, 2), (3, 2), (1, 3)] 
+0

OK、Counter()を使用せずにこれを行う方法はありますか? –

+0

フランクになるには、「N」個の道があり、「N」は無限です。それはあなたが望むものに依存する –

+0

まあ、私は文とループを好む。それは私がこれまでに本当に学んだことです。 –

0

これはそれを行うには難しい方法です:

x = [1,3,2,5,6,6,3,2] 
x_tuple = [] 

y = set(x) 

for i in y: 
    x_tuple.append((i,x.count(i))) 

print(x_tuple) 
+0

Ahhhhhhhhhhhhhhh。だから、私は空のタプルを作成し、それにすべてを追加する....申し訳ありませんが、何がセットですか? –

+0

'set'は要素が重複していない順不同のコレクションです。ここで読むことができます:https://docs.python.org/3/tutorial/datastructures.html#sets –

+0

ああ。私は重複を削除する必要はないと思うので、私はそれを使用しないでください? –

0

使用setとリスト内包:

def counts_of_names(names): 
    return [(name, names.count(name)) for name in set(names)] 
+0

もう一度やり直してください。私はたくさんのコードを1行に書いていません:( –

+0

'set(names)'はリスト 'names'の一意の名前を取得することです。' names.count(name) 'は' name'の出現を数えます。 (名前、数) 'を返します。 – acw1668

+0

Ahhhhです。このコードを書くと、私はforループを持っています他のすべてのもの....一つの行のコードはちょうど私を混乱させる。 –

関連する問題