4 个回答

1

在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够清晰,或者是我们对某些概念理解得不够透彻。比如,有人可能在使用某个函数时,发现它的表现和预期不一样,这时候就需要仔细检查代码,看看是不是哪里出了问题。

另外,编程的世界里有很多术语和概念,刚开始接触的时候可能会觉得很复杂。其实,只要慢慢来,多实践,就能逐渐理解这些内容。遇到不懂的地方,可以查阅资料或者向别人请教,大家都是从小白过来的。

总之,编程是一门需要耐心和细心的技能,遇到问题时不要气馁,认真分析,逐步解决,就一定能进步。

import itertools
all_items = set(itertools.chain(*a))
b = sorted(all_items, key = lambda y: -sum(x.count(y) for x in a))
1

试试这个 -

a = [[1,2,3,4], [2,3,4], [4,5,6]]
s = set()
for l in a:
    s.update(l)
print s 
#set([1, 2, 3, 4, 5, 6])
b = list(s)

这样做会把每个列表里的元素都放到一个集合里,这样你就能得到所有列表中元素的唯一集合。如果你想要的是这个的话。

补充一下。如果你想保持原列表中元素的顺序,就不能使用集合。

a = [[1,2,3,4], [2,3,4], [4,5,6]]
b = []
for l in a:
    for i in l:
        if not i in b:
            b.append(i)
print b
#[1,2,3,4,5,6] - The same order as the set in this case, since thats the order they appear in the list
4

我觉得这可能是你能找到的最接近的答案:

from collections import defaultdict

d = defaultdict(int)

for sub in outer:
  for val in sub:
    d[val] += 1

print sorted(d.keys(), key=lambda k: d[k], reverse = True)
# Output: [4, 2, 3, 1, 5, 6]

有一种可能性是,出现次数相同的元素顺序可能是不确定的——也就是说,d.keys() 的输出顺序是不固定的。

撰写回答