私は同様の質問をしました (キーを削除せずに辞書から重複値を削除します)、残念ながら、私が必要としていた答えはどれもありませんでしたが、彼らは私の答えを出しました。質問。
2 つの .csv ファイルから OrderedDict を構築しています。1 つ目は場所コードを含み、2 つ目は時間ごとのハードウェア再配置のリストです。すべての場所コードは一意であるため、それが私の辞書の鍵です。その .csv ファイルを使用して、空の値で辞書を作成するループがあります。次に、ハードウェア データを正しいロケーション コードに追加する別のループがあります。一部のハードウェア データはリスト形式であるため、ハッシュできません。
私が抱えている問題は、ハードウェアが新しい場所に移動するときに、以前の場所から削除する必要があることです。そのため、コードの最後の 1 か所だけに
私のロケーションコードは;
>1, 2, 3, 4, 5, 6
私のハードウェアデータは時間順に並んでいます。
>7pm, 1, 'item1', 'item2', 'item3'
>8pm, 2, 'item4', 'item5', 'item6'
>9pm, 3, 'item7', '', ''
>10pm, 4, 'item8', '', ''
>11pm, 5, 'item1', 'item2', 'item3'
>12am, 6, 'item7', '', ''
>1am, 3, 'item4', 'item5', 'item6'
条件ステートメントなしでタイムフレーム全体のコードを実行すると、最終的な辞書は次のようになります
>myDict = {'1': ['item1', 'item2', 'item3'], '2': ['item4', 'item5', 'item6'],
>'3': 'item7', '4': 'item8', '5': ['item1', 'item2', 'item3'], '6': 'item7'}
しかし、私がそれを必要としているのも次のとおりです。
>my Dict = {'1': '', '2':'', '3': ['item4', 'item5', 'item6'], '4':
>'item8', '5': ['item1', 'item2', 'item3'], '6': 'item7'}
項目 (値) は場所 (キー) が追加される順序と同じ順序でディクショナリに追加されないため、ディクショナリを作成 (値を追加) しながらこれを行うことが重要です。完了後に重複を削除します。
私は多くのことを試し、異なる結果を得ましたが、私の最新のものは
locationCSV = open('location.csv', "r")
hardwareCSV = open('hardware.csv', "r")
locationLines = locationCSV.readlines()
hardwareLines = hardwareCSV.readlines()
finalLoc = OrderedDict()
for line in locationLines:
locationList = line.split(",")
code = locationList[0]
finalLoc[code] = ""
for line in hardwareLines:
hardwareList = line.split(",")
hardwareData = [hardwareList[2],hardwareList[3],hardwareList[4]]
for k, v in finalLoc.iteritems():
if hardwareData in finalLoc.itervalues():
finalLoc[k] = ""
finalLoc[hardwareList[1]] = hardwareData
print finalLoc
これにより、すべての場所が空になります。私はこれに数日間立ち往生しているので、助けていただければ幸いです。