如何从1个dict中的几个dicts中检索某个键的值?

时间:2015-10-08 11:30:16

标签: python dictionary

我从包含其他几个词组的dict中获取某些值时遇到问题。它看起来像这样:

dictionary = {
    '1532': {'text': 'Hello World, nice day huh?',
             'user': 'some_name',
             'word_list': ['Hello', 'World', 'nice', 'day', 'huh']},
    '4952': {'text': "It's a beautiful day",
             'user': 'some_name',
             'word_list': ["It's", 'a', 'beautiful', 'day']},
    '7125': {'text': 'I have a problem',
             'user': 'some_name',
             'word_list': ['I', 'have', 'a', 'problem']}}

我想要做的是迭代字典,每次迭代只检索' word_list'的值。

3 个答案:

答案 0 :(得分:1)

这是一个非常基本的方法:

for x in dictionary.values():
  print x["word_list"]

答案 1 :(得分:0)

只需迭代dictionary的值然后:

for sub in dictionary.values():
    print(sub['word_list'])

如果这是Python 2,请考虑使用dictionary.itervalues(),这样就不会为循环构建新的列表对象。

这会产生:

>>> for sub in dictionary.values():
...     print(sub['word_list'])
... 
["It's", 'a', 'beautiful', 'day']
['I', 'have', 'a', 'problem']
['Hello', 'World', 'nice', 'day', 'huh']

你当然可以嵌套循环;你可以进一步循环单词列表:

for sub in dictionary.values():
    for word in sub['word_list']:
        print(word)

答案 2 :(得分:0)

使用pandas的替代方法:

import pandas as pd

pd.DataFrame.from_dict(dictionary, orient='index').word_list.tolist()

Out[407]:
[['Hello', 'World', 'nice', 'day', 'huh'],
 ["It's", 'a', 'beautiful', 'day'],
 ['I', 'have', 'a', 'problem']]

如果您想将单词放在一个列表中:

from itertools import chain
import pandas as pd

list(chain(*pd.DataFrame.from_dict(dictionary, orient='index').word_list))

Out[410]:
['Hello',
 'World',
 'nice',
 'day',
 'huh',
 "It's",
 'a',
 'beautiful',
 'day',
 'I',
 'have',
 'a',
 'problem']