タプルのリストがあります。これらのタプルには整数値とカテゴリが含まれます。Python list - 最小値のタプルを見つけますが、リストをランダム化します。
mylist = ((1,catA),(1,catB),(2,catA),..)
私の目的は、リストから値=最小値を持つタプルを1つ選択することです。値=最小値を有する1つ以上のタプルが存在する可能性がある。上記の例では、最小値は1であり、CatAとCatBの両方とも値=最小値を有する。
は、最小値を取得するには私が使用:
min_value = min(mylist , key=lambda x: x[0])[0]
が値でタプルを選択するには= MIN_VALUE私が使用:選択したように、
min_tuple = min([x for x in mylist if x[0] == min_value])
は、しかし、私は、ソート順序をランダム化したいと思いますタプルは常に同じカテゴリを持つわけではありません。
min_tupleを選択する前にシャッフルを使用しようとしましたが、選択順序が変更されませんでした。
random.shuffle(mylist)
min_tuple = min([x for x in mylist if x[0] == min_value])
だから、私はmin_tuple式がそれ自身の注文であると推測しています。これは本当ですか? trueの場合、min_tupleの式の順序は、value = min_valueのタプルを選択するとランダム化されますか?
編集追加する:
私は他の場所で他のSO質問/回答はしてからrandom.choice
を知っていたが、私の質問がmin tuple
表現に焦点を当てた、具体的方法/それはで最小値を発見したとして、それはタプルを注文した場合リスト。
また、私の具体的な製剤は、誤ってまたは不必要(例:== min_value
とmin()
)min value
は「二重のフィルター」を行いました。私がここで受け取った答えはこの使用法を修正し、私の具体的な方法の変更としてrandom.choice
も適用しました。
[Pythonを使用してリストから項目をランダムに選択するにはどうすればよいですか?](http://stackoverflow.com/questions/306400/how-do-i-randomly-select-an-item-from-a -list-using-python)を使用します。唯一の質問は、「リストの要素をランダムに選択する方法は?」です。最小値を持つタプルにフィルタリングする方法はすでに分かっています。 – jpmc26
Plsは受け入れられた答えを参照してください。私はこの特定の質問をする必要がありました。 – curtisp
受け入れられた答えは 'random.choice'だけを使用し、他の質問で受け入れられた回答も同様です。ここには新しい情報はありません。 – jpmc26