2016-12-03 25 views
1

私の心配はPython 3.5で動作していないことですが、python 2.7で完璧に動作します。人、アイテム、ストアに基づいたグループ化

質問は、私たちがに基づいてグループにコンテンツを必要です。

  1. 項目
  2. ファイル 1511.txt内のコンテンツ

は以下のとおりです。

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

Outp UT:私は実行するには、このコードを変更することができますどのように、これは私のコードである

'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 

'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で同じプログラムを実行しようと、それは誤りで出力以下に示します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ない()はもはやリストを返し、print文を書くための簡単な方法は、このようになります:

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

代わりにあなただけのlist(dict.keys())を使用することができますが、私は示した方法がよりあります明らかです。

+0

を働いてくれました:)ありがとうございました! – Apple

+0

こんにちは、もう1つのコードで私を助けてください: – Apple

+0

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

関連する問題