2017-03-01 15 views
0

他の質問がトピックに掲載されていますが、私は別の問題があります。Python:タプルのリストから値を抽出する

score = [0.133961, 0.026456, 0.210888, 0.521684, 0.156776] 
tone = [u'Anger', u'Disgust', u'Fear', u'Joy', u'Sadness'] 

及び出力を得るために

highest_three = sorted(zip(score, tone_name), reverse = True)[:3] 

使用: は私は2つのリストから最大3つのスコアと対応する値を見つけることによって作られたタプルのリストを持っている

[(0.521684 、u'Joy ')、(0.210888、u'Fear')、(0.156776、u'Sadness ')]

出力でのみ印刷したいと思っています。

Joy, Fear, Sadness 

私が使用:

emo = ', '.join ('{}'.format(*el) for el in highest_three) 

をが、これはスコアを返し、私はtone_nameを印刷したいです。助言がありますか ?

+1

' '' .join(highest_threeで_、V用V)' –

答えて

0

highest_threeはタプルのリストであり、あなただけの各タプルの2番目の要素(1stインデックス)欲しい:あなたのコードに以下の変更で

highest_three = sorted(zip(score, tone_name), reverse = True)[:3] 

# get first element of each tuple and join using comma 
emo = ', '.join(t[1] for t in highest_three) 
print(emo) # 'Joy, Fear, Sadness' 
+0

だから私はトンを使用した場合、[0]、それは私だけのスコアを与えます。私はあなたの方法から正しい出力を得ていますが、理解したかったのです。 –

+0

はい、各タプルの最初の要素はスコアであり、2番目の要素はトーンです。 – AKS

+0

@ AKSですが、t [0]を使用するとエラーが発生します –

1

を:

score = [0.133961, 0.026456, 0.210888, 0.521684, 0.156776] 
tone = [u'Anger', u'Disgust', u'Fear', u'Joy', u'Sadness'] 
highest_three = sorted(zip(score, tone), reverse = True)[:3] 
print(','.join(v for _, v in highest_three)) 

出力:

Joy,Fear,Sadness 
+0

ここには何がありますか?私は正しい出力を得ていますが、理解したかったのです。ありがとう –

+0

@RishabhRusia https://shahriar.svbtle.com/underscores-in-pythonが役に立つかもしれません。 _は異なった意味を持っていますが、これは '意図されていない ' – sangheestyle

0

zipを回して辞書、あなたはもっと簡単な時間を持つでしょう。

score = [0.133961, 0.026456, 0.210888, 0.521684, 0.156776] 
tone = [u'Anger', u'Disgust', u'Fear', u'Joy', u'Sadness'] 

d = dict(zip(tone, score)) 

result = sorted(d, key=d.get, reverse=True) 
print(*result[:3]) 
0
print ', '.join([i[1] for i in highest_three]) 

上記他の人がすでに私たちに良いを与えたが、ここで

0

は、別の解決策であるhighest_threeリストから、各タプルの唯一の第二の要素で構成されたリストにjoin方法を適用しますソリューション。

from itertools import islice 


emo = ', '.join(i[0] for i in islice(sorted(zip(tone, score), reverse=True), 3)) 
関連する問題