2017-03-17 24 views
0

私はPythonでリストを持っていますが、値の最初の出現(> = 5000000)を検索していますが、> = 500000の最初を返します。 ここでコマンド:最初の発生を検索中にエラーが発生しました

First_Range_Init_Freq = next(x for x in Freq_Cust if x > '5000000.000') 

奇妙である、それは私がリストに正確な値を検索する場合、「==」正常に動作しますが、私は大きなまたは同等の何かを検索する場合、間違った値を返します「> =」。

アイデア?

+0

*文字列*と比較しますか? –

答えて

0

問題が正しく理解されているかどうかは不明です(データ不足)。
あなたは

  • 1)は、リスト内の> = 5000000値の最初の出現を取得し、しようとしていますか?
  • 2)またはその位置?
  • 3)あなたは以下のように配列のインデックスメソッドを使用することができます見つけようとしているその最初に出現した場合あなたは、とにかくstring X> 「5000000.000」

で)int(> = 5000000を比較しています。あなたが使用して取得することができ、その位置については

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> 
5000000.000 
>>> 

>>> print First_Range_Init_Freq 
1 

私はあなたが持つ文字列または整数と文字列を比較していると仮定しています。(問題サンプルリストを使用して)

Freq_Cust = ['4800000.000', '5000000.000' , '5000001.000', '50000010.000', '4900000.000', '500000.000' ] 

First_Range_Init_Freq = [Freq_Cust.index(x) for x in Freq_Cust if x >= '5000000.000'][0] 
print Freq_Cust[First_Range_Init_Freq] 

結果int。そうでなければ、比較を正しいタイプとバランスさせる必要があります。

これがあなたが探しているものでない場合は教えてください。さらに詳細な質問を更新してください。

EDIT1
ご意見に基づき、問題は、数字をテキストとして比較しているため、結果が間違っているということです。

int 5000000番号は=フロート5000000.000ありながら、ない=、以下の '5000000.000' を

>>> '5000000' == '5000000.000' 
False 
>>> '5000000.000' > '5000000' 
True 
>>> 5000000 == 5000000.000 
True 
>>> 

テキスト '5000000' を参照してください。

したがって、リストの値を浮動小数点にマップし、比較も浮動小数点で行うと、正しい結果が得られます。

Freq_Cust = [ '480万'、 '5000000'、 '5000001'、 '50000010'、 '4900万'、 '500000']

Freq_Cust = map(float,Freq_Cust) 

First_Range_Init_Freq = [Freq_Cust.index(x) for x in Freq_Cust if x >= float('5000000.000')][0] 
print Freq_Cust[First_Range_Init_Freq] 

>>> 
5000000.0 
>>> 

は勿論あなただけのx> = 5000000.000またはXを使用して比較することができます> = 5000000

あなたのリストの値が一部intと一部floatている場合は、mapキャッチオールソリューションとしてfloatにするとよいでしょう。

+0

ありがとうございました! :) 私がPythonでプログラミングしているのは初めてです。だからこそ私はこれらの問題に直面しています... リストの中で値> = 5000000.000の最初の出現を得ようとしています。リスト。 私はこれらの値をファイルから読み込み、これらの値はすべて浮動小数点型であると考えましたが、明らかにそうではありませんでした。 –

+0

ありがとうございました! :) 私がPythonでプログラミングしているのは初めてです。だからこそ私はこれらの問題に直面しています... リストの中で値> = 5000000.000の最初の出現を得ようとしています。リスト。 私はあなたの提案を試みたが、うまくいかなかった。 私はファイルからこれらの値を読んでいて、これらの値はすべて浮動ですが、明らかにそうではないと考えました。私はそれを浮動小数点に変換しようとしましたが、Freq_Custで私はfloat(Freq_Cust)になりましたが、コマンドを実行しますが、 "type(Freq_Cust)is float"コマンドを入力すると "False"を返します。 リストを浮動小数点に変換する必要がありますか? –

+0

私の編集したこの返信をご覧ください –

関連する問題