【发布时间】:2015-01-26 05:53:02
【问题描述】:
我有许多存储在字典中的列表。我想找到子列表的交集(即intersection of dict[i][j]) for all keys of the dictionary。)
例如,如果字典改为存储元组集,我可以使用以下代码:
set.intersection(*[index[key] for key in all_keys])
什么是执行此操作的有效方法?我尝试的一种方法是首先将每个列表列表转换为一组元组,然后取它们的交集,但这相当笨拙。
例子:
假设列表列表的字典是
dict = {}
dict['A'] = [[1, 'charlie'], [2, 'frankie']]
dict['B'] = [[1, 'charlie'], [2, 'chuck']]
dict['C'] = [[2, 'chuck'], [1, 'charlie']]
那我想退货
[1, 'charlie']
(可以是元组,不一定是列表)
编辑:我刚刚找到了一个不错的方法,但它不是很“pythonic”
def search(index, search_words):
rv = {tuple(t) for t in index[search_words[0]]}
for word in search_words:
rv = rv.intersection({tuple(t) for t in index[word]})
return rv
【问题讨论】:
-
你能给个样品吗?
-
是的!刚加了一个——谢谢
-
哪里有字典?问题标题说字典
-
A、B 和 C 存储在字典中。我会编辑清楚