我是一名Python新手,我在名单上工作了2个月,我有一些问题。我有一些列表,他们有重复的项目。我可以在两个列表之间获得重复的项目,现在我想要列表的数量和深度增加像这个例子: http://i219.photobucket.com/albums/cc213/DoSvn/example.png。 我想从红色部分获取重复项目的父项,而不是蓝色部分或这些重复项目的列表。我该怎么做 ? 谢谢:))
更新: 感谢您的回答:D我使用了Set,它很棒。但我想如果我不知道列表列表的大小,仅此而已,它们是动态列表,我可以获得所有红色部分,例如:http://i219.photobucket.com/albums/cc213/DoSvn/example02.png?
答案 0 :(得分:1)
如果您正在搜索此类内容:http://i219.photobucket.com/albums/cc213/DoSvn/example02.png
然后你可以试试Counter(Python 2.7+中提供)。它应该像这样工作:
from collections import Counter
c = Counter()
for s in (listOfLists):
c.update(s)
for item, nbItems in c.iteritems():
if nbItems == 3:
print '%s belongs to three lists.' % item
或者使用古老的蟒蛇:
counter = {}
for s in (listOfLists):
for elem in s:
counter[elem] = counter.get(elem, 0) + 1
for item, nbItems in counter.iteritems():
if nbItems == 3:
print '%s belongs to three lists.' % item
答案 1 :(得分:0)
使用集合,您可以获得交集,并集,减法或任何复杂的组合
s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
s3 = set([1, 3, 5, 7, 9])
# now to get duplicate between s1, s2 and s2 take intersection
print s1&s2&s3
输出:
set([5])