2016-11-16 7 views
0
q = "cats dogs" 

d = {'cats': {1: 1, 2: 3, 3: 1, 4: 1}, 'nuts': {3: 1}, 'egg': {5: 1, 6: 2}, 'dogs': {1: 8, 2: 2, 3: 4}, 'idea': {4: 1}, 'frog': {2: 1, 4: 1, 5: 1}} 

newList = [] 

for word in q: 
    for x,y in d.values(): 
     newList.append(d[word].x()) 

私がここでやりたいことは、数字の各部分の最初の部分を取得し、qの単語に対応するときにリストに入れます。だから、私はnewListが[1,2,3,4,1,2,3]になると期待しています。dict内のタプル値へのアクセス

ValueErrorが発生しました:アンパックする値が多すぎます(予想2)。私はこれをどのようにしなければならないのですか?

+2

を出力します。あなたは驚くでしょう。 – TigerhawkT3

+1

そして、 'x、y'を' item'で置き換えて、 'item'を印刷したいかもしれません。あなたは再び驚くでしょう。 – TigerhawkT3

+0

Yikes!それはまったく期待していませんでした – user1893110

答えて

1

辞書 'd'の値は実際には型自体であり、タプルではありません。私はあなたがこれを少し再編成したいと思うかもしれないと思う。

for word in q.split(" "): 
    if word in d: 
    child_dict = d[word] 
    for key in child_dict: 
     newList.append(key) 
+0

これは意味があります。脳は今日非常に揚げられています。ありがとうございました – user1893110

0

これはあなたが探しているものですか?

q = "cats dogs" 

d = {'cats': {1: 1, 2: 3, 3: 1, 4: 1}, 'nuts': {3: 1}, 'egg': {5: 1, 6: 2}, 'dogs': {1: 8, 2: 2, 3: 4}, 'idea': {4: 1}, 'frog': {2: 1, 4: 1, 5: 1}} 

newList = [] 

for word in q.split(' '): 
    newList.extend(list(d[word].keys())) 

print(newList) 

それは `そのループ内word`を印刷してみ[1, 2, 3, 4, 1, 2, 3]

0
q = "cats dogs" 

d = {'cats': {1: 1, 2: 3, 3: 1, 4: 1}, 'nuts': {3: 1}, 'egg': {5: 1, 6: 2}, 'dogs': {1: 8, 2: 2, 3: 4}, 'idea': {4: 1}, 'frog': {2: 1, 4: 1, 5: 1}} 

newList = []  

for word in q.split(' '): 
    if word in d: 
     newList.extend([i for i in d[word]]) 

print(newList) 
関連する問題