我的關注是關於我的代碼沒有在python 3.5中運行,它在python 2.7中運行得非常好。基於人,物品和商店分組
的問題是,我們需要對內容進行分組依據:
- 人
- 項目
- 店
文件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]))
當你說「Python 3.7」時,我們是否假設你的意思是「Python 3.5」? –
對不起,我的Python 3.5 – Apple