タイトルには、リスト内の重複を検出するだけでなく、それらを移動する方法他のリストにPython - テキストファイルで生成されたリストの重複を防ぐソリューションを探しています
私はプログラミングで比較的新しいです。私のローカルJCでPythonの入門コースを終えたばかりです。学期中、.txtファイルの行を読み込んでリストに入れ、リストをシャッフルし、単一のリストを2つの新しいリストに分割して印刷するプログラムを作成する考えがありました。これは、例えば、ゲーム内の2人のプレイヤーに一意の名前のオブジェクトを迅速に配布するために使用されます。ここでのコードは、これまでのように見えるものです:私はこれまでの仕事をするすべてのものが、何かを得ているlist.txtに=リンゴ、リンゴ、バナナ、梨、オレンジ、キウイ
import random
#create list from text file
list = [line.strip() for line in open("list.txt", 'r')]
#Copy list to preserve the original
list2 = list[::]
random.shuffle(list2) #shuffle the order
#If # of items = odd, remove one
if len(list2) % 2 == 1:
del list2[-1]
#Divide items into two lists
A = list2[:len(list2)//2]
B = list2[len(list2)//2:]
print("The items in group A are: ", A)
print("The items in group B are: ", B)
ことを考えると
私が実装したいのは、プログラムが「リンゴ」と「リンゴ」の両方がリストAにあるかどうかを検出していれば、リストBに移動します。私は3つの解決法を考え出しましたが、 。解決策1は、2つの「リンゴ」をそのまま持ち、そこから検出/分類することです。
def moveDuplicates(in_list):
unique = set(in_list)
for each in unique:
count = in_list.count(each)
if count > 1:
return True
else:
return False
問題は、私はこのようなうまく重複を検出することができるということですが、それはだから、私は、新しいリストのいずれかの位置を知ることができませんので、私はそれらのいずれかを移動指定する方法がわかりません毎回シャッフル。
解決策2は、「apple」の名前をapple1とapple2などに変更することです。このソリューションでは、どちらかの項目を簡単に削除して追加することができますが、同じ番号の2つの項目が同じリストにあることを検出する方法はわかりません。
解決方法3は、各リストに1つずつ配置されたシャッフルがDRY原則に違反する前に必ず重複する可能性があることを確認するための条件を記述するため、最悪です。
ソリューション2または3を使用するのが最も理想的なソリューションだと思うが、アスタリスクの代わりに何かがあることを示すために、グーグルが検索でアスタリスクを使用する方法と似た何かを使用している。
は、おそらく 'collections 'のようなものを使用できます。カウンタは、あなたが何をしようとしているのかはっきりしていません。 – reptilicus