Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでのバイナリ要素リストのグループ化


各サブリストに2つの要素があるリストのリストがあるとします。各サブリストの1つの要素は、リストの他の多くのサブジェクトに共通です。共通の要素でグループ化されたサブリストを表示する最終的なリストを作成する必要があります。

セットとマップ付き

指定されたリストでは、最初の要素は文字列で、2番目の要素は数値です。したがって、各サブリストの2番目の要素を保持する一時リストを作成します。次に、サブリストを一時リストの各要素と比較し、デザイナーがそれらをグループ化します。

listA = [['Mon', 2], ['Tue', 3], ['Wed', 3],
["Thu", 1], ['Fri', 2], ['Sat', 3],
['Sun', 1]]
# With set and map
temp = set(map(lambda i: i[1], listA))
res = [[j[0] for j in listA if j[1] == i] for i in temp]
# Result
print("The list with grouped elements is : \n" ,res)

出力

上記のコードを実行すると、次の結果が得られます-

The list with grouped elements is :
[['Thu', 'Sun'], ['Mon', 'Fri'], ['Tue', 'Wed', 'Sat']]

groupbyとitemgetterを使用

itemgetter関数は、各サブリストの2番目の要素を取得するために使用されます。次に、itemgetter関数の結果に基づいてgroupby関数が適用されます。

from itertools import groupby
from operator import itemgetter
listA = [['Mon', 2], ['Tue', 3], ['Wed', 3],["Thu", 1], ['Fri', 2], ['Sat', 3],['Sun', 1]]
# With groupby
listA.sort(key = itemgetter(1))
groups = groupby(listA, itemgetter(1))
res = [[i[0] for i in val] for (key, val) in groups]
# Result
print("The list with grouped elements is : \n" ,res)

出力

上記のコードを実行すると、次の結果が得られます-

The list with grouped elements is :
[['Thu', 'Sun'], ['Mon', 'Fri'], ['Tue', 'Wed', 'Sat']]

defaultdictを使用

defaultdict関数を適用して、サブリストの2番目の要素を辞書のキーとして取得します。次に、結果のリストに、サブリストの最初の要素の値を追加します。

import collections
listA = [['Mon', 2], ['Tue', 3], ['Wed', 3],["Thu", 1], ['Fri', 2], ['Sat', 3],['Sun', 1]]
# With defaultdict
res = collections.defaultdict(list)
for val in listA:
   res[val[1]].append(val[0])
# Result
print("The list with grouped elements is : \n" ,res)

出力

上記のコードを実行すると、次の結果が得られます-

The list with grouped elements is :
defaultdict(<class 'list'>, {2: ['Mon', 'Fri'], 3: ['Tue', 'Wed', 'Sat'], 1: ['Thu', 'Sun']})

  1. Pythonでのバイナリリストから整数へ

    さまざまなアプローチを使用して、Pythonで2進数を表す0と1のリストを10進数に変換できます。以下の例では、int()メソッドとビット単位の左シフト演算子を使用しています。 int()の使用 int() メソッドは2つの引数を取り、以下の構文に従って入力のベースを変更します。 int(x, base=10) Return an integer object constructed from a number or string x. 次の例では、int()メソッドを使用してリストの各要素を文字列として取得し、それらを結合して、基数10の整数に変換される最終的な文字列を形成します。

  2. 二分探索のためのPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明- ソートされたリストが表示され、バイナリ検索を使用して要素を見つける必要があります。 アルゴリズム xを中央の要素と比較します。 xが中央の要素と一致する場合、中央のインデックスを返します。 それ以外の場合、xがmid要素よりも大きい場合、xはmid要素の後の右半分のサブ配列にのみ存在できます。したがって、右半分を繰り返します。 それ以外の場合(xは小さい)は左半分で繰り返されます 再帰的アルゴリズム 例 def binarySearchAppr (arr,