可以说,如果您要传递
None缺少的密钥,则可以使用
all和
zip:
>>> from itertools import permutations>>> import random#create a sample dict>>> dic = {k:random.randint(1, 1000) for k in permutations('abcde', 3)}def partial_match(key, d): for k, v in d.iteritems(): if all(k1 == k2 or k2 is None for k1, k2 in zip(k, key)): yield v... >>> list(partial_match(('a', 'b', None), dic))[541, 470, 734]>>> list(partial_match(('a', None, 'b'), dic))[460, 966, 45]#Answer check>>> [dic[('a', 'b', x)] for x in 'cde'][541, 734, 470]>>> [dic[('a', x, 'b')] for x in 'cde'][966, 460, 45]


