2016-12-03 29 views
1

嗨,我被困在下面的代碼,而我試圖找到問題的解決方案: 根據銷售量的書籍查找所有人。Python代碼根據銷售的書籍數量找到所有人

下面

是文件的內容1711.txt

  • 大衛書05沃爾瑪
  • 艾米莉書10克羅格
  • 傑森食品11個目標
  • 大衛食品20克羅格
  • eva cloth 13 target
  • david book 5 walmart

輸出應該是這樣的:大衛售出10本書沃爾瑪

  • EVA售出13分佈瞄準

  • 大衛售出20食物克羅格

下面是我寫的代碼,請幫我用正確的代碼來顯示正確的結果, 謝謝!

d={} 
p={} 
q={} 

with open("1711.txt","r") as f: 
    for line in f: 
     a=line.split() 
     l,m,n,o=str(a[0]), str(a[1]), int(a[2]), str(a[3]) 
     d.setdefault(l,[]).append(n) 
     p.setdefault(m,[]).append(n) 
     q.setdefault(o,[]).append(n) 

    d=dict((key,sum(val)) for key,val in d.items()) 
    print (d) 
    print("----------------------") 
    p=dict((keys,sum(values)) for keys,values in p.items()) 
    print (p) 
    print("--------------------") 

    q=dict((keeys,sum(valu)) for keeys,valu in q.items()) 
    print (q) 
    print("----------------------------") 

    for k, v in d.items(): 
     print("number of itmes sold by {} is {}".format(k,v)) 
    print("------------------------------") 

    for k, v in q.items(): 
     print("number of itmes in {} is {}".format(k,v)) 
    print("------------------------------") 

    for k, v in p.items(): 
     print("total number of {} sold is {}".format(k,v)) 
    print("------------------------------") 
+0

如果你被允許使用外部庫,那麼你可以在幾個步驟中做到這一點,我猜。 – MYGz

回答

1

聽起來像你想要一些嵌套字典。頂層應該有所有名稱的鍵,值應該是另一個字典。

這些字典應該有項目的鍵,值應該是另一個字典。

最後,這些字典應該有商店的密鑰,價值應該是已經賣給該商店的數字。

那麼如果你去:sales_dict [「david」] [「book」] [「target」]它會爲你吐出10個。

編輯: 這是創建字典的要點。如果您仍然有問題,我認爲您應該參考https://docs.python.org/3/tutorial/datastructures.html#dictionaries

d = {} 
for line in f: 
     a=line.split() 
     l,m,n,o=str(a[0]), str(a[1]), int(a[2]), str(a[3]) 
     if l not in d: 
      d[l] = {} 
     if m not in d[l]: 
      d[l][m] = {} 
     if n not in d[l][m]: 
      d[l][m][n] = 0 
     d[l][m][n] += int(o) 
+0

有人可以幫助我修改代碼以打印正確的輸出 – Apple