我有一个元组,其中包含一些我想与一个或多个字典匹配的名称。
t = ('A', 'B')
d1 = {'A': 'foo', 'C': 'bar'}
d2 = {'A': 'foo', 'B': 'foobar', 'C': 'bar'}
def f(dict):
"""
Given t a tuple of names, find which name exist in the input
dictionary dict, and return the name found and its value.
If all names in the input tuple are found, pick the first one
in the tuple instead.
"""
keys = set(dict)
matches = keys.intersection(t)
if len(matches) == 2:
name = t[0]
else:
name = matches.pop()
value = dict[name]
return name, value
print f(d1)
print f(d2)
输出(A, foo)
在这两种情况下。
这不是很多代码,但它涉及转换为一个集合,然后做一个交集。我正在研究一些 functools 并没有发现任何有用的东西。
使用标准库或我不知道的内置函数是否有更优化的方法?
谢谢。