我試圖讀取兩個.dat文件並創建一個程序,該程序使用aid2name的值作爲字典中的鍵它具有aid2numplays的關鍵和價值,並被設定爲它的價值觀。這一切都是爲了讓文件產生一個包含(藝術家姓名,藝術家ID,劇本頻率)的結果。值得注意的是,第一個文件提供了藝術家姓名和藝術家ID,而第二個文件提供了每個用戶的用戶ID,藝術家ID和頻率。任何想法如何聚合這些頻率的用戶,然後顯示他們(藝術家的名字,藝術家ID,播放頻率)格式?下面是我迄今管理:在Python 3.6中使用setdefault使用來自兩個不同文件的信息顯示(名稱,ID和頻率計數)
import codecs
aid2name = {}
d2 = {}
fp = codecs.open("artists.dat", encoding = "utf-8")
fp.readline() #skip first line of headers
for line in fp:
line = line.strip()
fields = line.split('\t')
aid = int(fields[0])
name = fields[1]
aid2name = {int(aid), name}
d2.setdefault(fields[1], {})
#print (aid2name)
# do other processing
#print(dictionary)
aid2numplays = {}
fp = codecs.open("user_artists.dat", encoding = "utf-8")
fp.readline() #skip first line of headers
for line in fp:
line = line.strip()
fields = line.split('\t')
uid = int(fields[0])
aid = int(fields[1])
weight = int(fields[2])
aid2numplays = [int(aid), int(weight)]
#print(aid2numplays)
#print(uid, aid, weight)
for (d2.fields[1], value) in d2:
group = d2.setdefault(d2.fields[1], {}) # key might exist already
group.append(aid2numplays)
print(group)
這可能有助於看到最終的數據結構應該是什麼樣子,我不能確定你打算如何使用[setdefault(HTTP的例子:/ /stackoverflow.com/questions/3483520/use-cases-for-the-setdefault-dict-method) – brennan