私はコレクションモジュールからsetdefault()関数を使って2つのテーブル/ディクテーションを作成しています。最初のdictは、最初のitem要素がキーになり、2番目の要素が値になるように圧縮され、キーごとに任意の数の値が存在できる2つのリストから作成されます。各キーの重複値を除外する方法はありますか?setdefaultsで一意の値を保持するだけです
keylst = ['a','a','b','b','a','b']
vallst = [1,1,2,2,3,3]
zip = [('a',1),('a',1),('b',2),('b',2),('a',3),('b',3)]
result = a[1,1,3], b[2,2,3]
desired_result = a[1,3], b[2,3]
はここで、これまでに私のコードです:
import collections
import xlrd
#open workbook to get values
wb1 = xlrd.open_workbook(r"S:\Bands.xlsx")
sh1 = wb1.sheet_by_index(0)
#Open a rate code workbook
wb2 = xlrd.open_workbook(r"S:\Sands.xlsx")
sh2 = wb2.sheet_by_index(0)
#make a lists
roLst = []
raLst = []
# polpulate lists
cell_range_value = 0
for value in sh1.col(9):
cell_range_value += 1
print cell_range_value
for i in range(1,cell_range_value,1):
roVal = str(sh1.cell(i,9).value)
raVal = str(sh1.cell(i,19).value)
cell_value_id = sh1.cell(i,1).value
roLst.append(roVal)
raLst.append(raVal)
#make multivalue dict1
RoRaDct = {}
for key, item in zip(roLst,raLst):
RoRaDct.setdefault(key,[]).append(item)
for key, item in RoRaDct.items():
print key, item
#make multivalue dict2
fType = []
rtLst2 = []
cell_range_value = 0
for value in sh2.col(0):
cell_range_value += 1
for i in range(1,cell_range_value,1):
fVal = str(sh2.cell(i,1).value)
rtVal = str(sh2.cell(i,0).value)
cell_value_id = sh2.cell(i,1).value
fType.append(fVal)
rtLst2.append(rtVal)
TpRtDct = {}
#check values
for key, item in zip(fType,rtLst2):
TpRtDct.setdefault(key,[]).append(item)
for key, item in TpRtDct.items():
print key, item
'list'値が必要ですか?代わりに' set'を使ってコードを動作させることはできますか? – mgilson
セットは問題ありません。私は、彼らが作成された後にディクテーションをループし、その値をセットにすることができると思います。 – ShaunO
はい。それは完璧に働いた。 – ShaunO