Python3。在值字典中查找数组的值

时间:2018-03-11 04:34:59

标签: python python-3.x dictionary defaultdict

我有两个清单。

  

列出all_text - 第一个值是键,第二个意思是a   一套文字。

     

列出keyword_list - 我想在一组单词中找到的关键字列表   all_text。

我的代码显示list all_text的所有值。

我想得到以下结果:

defaultdict(<class 'list'>, {'Z1234': ['earth'], 'Z1207': ['north']})

如何修复下面的代码?

from collections import defaultdict, Counter
all_text = [['Z1234', 'earth total surface area land'], ['Z1207', 'first 
north university']]
keyword_list = ['earth', 'north']

dictions = defaultdict(list)
for key, sentence in all_text:
    dictions[key].extend(sentence.split())

result = defaultdict(list)
for x in dictions.values():
    for i in x:
        for y in keyword_list:
            if i in y:
                result[key].extend(x)
print(result)

>>defaultdict(<class 'list'>, {'Z1207': ['first', 'north', 'university', 
'earth', 'total', 'surface', 'area', 'land']})

2 个答案:

答案 0 :(得分:5)

这是一种方式。

from collections import defaultdict

all_text = [['Z1234', 'earth total surface area land'],
            ['Z1207', 'first north university']]
keyword_list = ['earth', 'north']

keyword_set = set(keyword_list)

d = defaultdict(list)

for k, v in all_text:
    for w in set(v.split()) & keyword_set:
        d[k].append(w)

# defaultdict(list, {'Z1207': ['north'], 'Z1234': ['earth']})

<强>解释

  • str.split没有参数将字符串分隔为按空格列出的单词列表。
  • &set交集的替代语法。

答案 1 :(得分:1)

它实际上在使用zip的python中退出了。请参考下面的代码并检查这是否与您想要的完全相同:

all_text = [['Z1234', 'earth total surface area land'], ['Z1207', 'first north university']]
keyword_list = ['earth', 'north']
finaldict = {}
for i,item in zip(keyword_list, all_text):
    finaldict[item[0]] = i
print(finaldict)