访问dict中的元组值

时间:2016-11-16 20:06:26

标签: python dictionary

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)。我该怎么做?

3 个答案:

答案 0 :(得分:1)

字典“d”中的值实际上是字典本身,而不是元组。我想你可能想重新组织一下。

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

答案 1 :(得分: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]

答案 2 :(得分: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)