2016-12-03 80 views
1

我的關注是關於我的代碼沒有在python 3.5中運行,它在python 2.7中運行得非常好。基於人,物品和商店分組

的問題是,我們需要對內容進行分組依據:

  1. 項目

文件1511.txt中的內容是:

david book 8 walmart 
mike book 5 kroger 
david food 3 walmart 
mary food 11 target 

輸出UT:

'mike': 5, 'mary': 11, 'david': 11 
'food': 14, 'book': 13 
'kroger': 5, 'walmart': 11, 'target': 11 
mike 5 
mary 11 
david 11 
number of items sold by mike is 5 
number of items sold by mary is 11 
number of items sold by david is 11 
total number of food sold 14 
total number of book sold 13 
total number of items sold by kroger is 5 
total number of items sold by walmart is 11 
total number of items sold by target is 11 

當我嘗試運行在Python 3.5相同的程序,它給出了下面的錯誤輸出:

'mike': 5, 'david': 11, 'mary': 11 
'food': 14, 'book': 13 
'target': 11, 'walmart': 11, 'kroger': 5 
Traceback (most recent call last): 
    File "C:\Users\putch\AppData\Local\Programs\Python\Python35\1511prognew.py", line 20, in <module> 
    print(str(d.keys()[i]+" "+str(d.values()[i]))) 
TypeError: 'dict_keys' object does not support indexing 

這是我的代碼,我怎麼能修改此代碼運行在Python 3.5中?

d={} 
p={} 
q={} 
with open("1511.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()) 
p=dict((keys,sum(values)) for keys,values in p.items()) 
q=dict((keys,sum(values)) for keys,values in q.items()) 
print (d) 
print (p) 
print (q) 

for i in range(0,len(d)): 
    print(str(d.keys()[i]+" "+str(d.values()[i]))) 

for i in range(0,len(d)): 
    print("number of items sold by "+d.keys()[i]+" is " +str(d.values()[i])) 

for j in range(0,len(p)): 
    print("total number of "+str(p.keys()[j])+" sold "+str(p.values()[j])) 

for j in range(0,len(q)): 
    print("total number of items sold by "+str(q.keys()[j])+" is "+str(q.values()[j])) 
+0

當你說「Python 3.7」時,我們是否假設你的意思是「Python 3.5」? –

+0

對不起,我的Python 3.5 – Apple

回答

0

dict.keys()不再返回一個列表,寫的打印語句應該是這樣一個簡單的方法:

for k, v in d.items(): 
    print("{} {}".format(k,v)) 

或者你可以只使用list(dict.keys()),但我發現的方法更明確。

+0

這工作:)非常感謝你! – Apple

+0

嗨,你能幫我一個更多的代碼: – Apple

+0

http://stackoverflow.com/questions/40943990/python-code-to-find-all-persons-based-on-qty-of-books-sold/40944072 #40944072 – Apple

相關問題