タプルのリストを取得し、各タプルの最初の番号に基づいて個別のリストに分割します。同じ手順で、フィルタリングされたリストを からの対応するキーを使用してディクショナリに追加しlist1
ます。の二重括弧list2
(下にコピー) があるため、実際のデータは にありlist2[0]
ます。
//note the double brackets, data is in list2[0], not list2
list2 = [[(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4)]]
d = dict()
for i in range (0, len(list1)):
d[list1[i]] = [x for x in list2[0] if x[0] == i+1]
//on the first run though, list[i] will be 'A' and will be set to [(1, 1), (1, 2), (1, 3), (1, 4)]
//on the 2nd run though, list[i] will be 'B' and will be set to [(2, 1), (2, 2), (2, 3), (2, 4)]
印刷d
すると、フォーマットされたデータが表示されます
print(d)
//prints {'A': [(1, 1), (1, 2), (1, 3), (1, 4)], 'B': [(2, 1), (2, 2), (2, 3), (2, 4)]}
編集:質問を読み違えました(長さだけでなく、辞書に実際のデータが必要だと思いました)。内容ではなくリストの長さを取得するには、2 番目のリスト内包表記をlen()
likeでラップするだけです。
len([x for x in list2[0] if x[0] == i+1])
その変更後d
、データではなく長さが含まれます。
print(d) //{'A': 4, 'B': 4}