未订购元素时的匹配列表

时间:2012-11-14 20:25:02

标签: python list dictionary

假设我有一个列表b=['m','NN']和一个字典dict={'b':['NN','m','big']},如果列表b的元素在{中,我想使用该函数来检索键'b' {1}} (所以我们假设使用dict[b]。 现在,如果[k for k,v in dict.items()]中的元素未按b中的元素排序并假设我无法更改b列表中的顺序,我该怎么办? 谢谢!

2 个答案:

答案 0 :(得分:4)

我不确定我明白你在问什么,但如果你所追求的是字典d中的键列表,其中的值是列表b的超集,那么你可以使用类似的东西:

b=['m','NN']
d={'b':['NN','m','big'], 'a':['jj','r']}
[k for k,v in d.items() if set(b) <= set(v)]

(我更改了示例词典的名称,因为dict是一个内置类。)

答案 1 :(得分:2)

你可以这样做:

 [k for k, v in dict.items() if all((x in v) for x in b)]

例如:

>>> b=['m','NN']
>>> dict={'b':['NN','m','big'], 'a':['NN', 'q']}
>>> [k for k, v in dict.items() if all((x in v) for x in b)]
['b']

(请注意,为字典dict命名是个坏主意,因为dict是数据类型的名称。)