2016-11-16 60 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]。访问字典中的元组值

我越来越ValueError:太多的值解压缩(预期2)。我应该怎么做?

+2

尝试在循环打印'word'。你会感到惊讶。 – TigerhawkT3

+1

你可能想用'item'替换'x,y',然后打印'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) 

它打印出[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)