Python,使用包含元组列表的字典匹配列表元素

时间:2017-09-21 06:44:57

标签: python list dictionary tuples tf-idf

我有一个字典,其中包含日期和术语频率序列,如下所示:

{
    'Wed Aug 09': [('夏', 49), ('日本', 48), ('海', 39), ('', 33), ('日', 28), ('写真', 25), ('まし', 24), ('', 24), ('️', 23), (' ソフトクリーム', 22)],
    'Thu Aug 10': [('夏', 1010), ('日本', 672), ('暑い', 501), ('海', 379), ('型', 253), ('日', 242), ('人', 223), ('まし', 209), ('い い', 159), ('雨', 149)]
}

在所有这些术语中,我有一个关键字列表,我想要总结所有数据:

key_words = ["夏", "海", "暑い", "雨", "秋", "寒い", "台風", "冬"]

我希望我的输出看起来像:

{
    'Wed Aug 09': [('夏', 49), ('海', 39),('暑い', 34), ('雨', 26), ('秋', 23), ('寒い', 15), ('台風', 12), ('冬', 9) ],
    # ...
}

这基本上是从字典中提取元组列表中的关键字。

我的提取代码如下所示:

result = dict()
for key, value in date_words.items():
    if key_words in date_words[value]:
        result[key] = value
 print(result)

但它会返回一个空字典。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您询问是否存在值中包含相同字符串的单个列表对象。没有,那里有两个元素的元组。您需要测试交叉点。

我改为key_words 设置

key_words = {"夏", "海", "暑い", "雨", "秋", "寒い", "台風", "冬"}  # use set([....]) in Python 2

并使用列表推导来提取所有匹配的元组:

result = {}
for key, value in date_words.items():
    result[key] = [(k, v) for k, v in value if k in key_words]

这可以进一步组合成字典理解:

result = {key: [(k, v) for k, v in value if k in key_words]
          for key, value in date_words.items()}