2024-04-20 01:14:04 发布
网友
基本上如果给一个列表
events = [123,123,456,456,456,123]
我希望它返回456,因为456最后出现的时间早于123最后出现的时间。
我列了一个清单,包括最初的数字清单的计数和索引。 我还制作了一个字典,其中键是events(原始部分)中的元素,而hte值是键的.count()。
.count()
我真的不知道从这里到哪里,需要帮助。
查找最常见的项目(计数器。最常见)。然后在具有最小索引的候选项中查找该项(枚举到索引字典中,最小值为{index:key}.iteritems())。
从@gnibbler和@Jeff那里大肆偷窃:
from collections import Counter def most_frequent_first(events): frequencies = Counter(events) indexes = {event: i for i, event in enumerate(events)} most_frequent_with_indexes = {indexes[key]: key for key, _ in frequencies.most_common()} return min(most_frequent_with_indexes.iteritems())[1] events = [123,123,456,456,456,123, 1, 2, 3, 2, 3] print(most_frequent_first(events))
>>> print(most_frequent_first(events)) 456
一段更好的代码将为您提供频率和索引,显示代码工作正常。下面是一个使用命名元组的实现:
from collections import Counter, namedtuple frequent_first = namedtuple("frequent_first", ["frequent", "first"]) def most_frequent_first(events): frequencies = Counter(events) indexes = {event: i for i, event in enumerate(events)} combined = {key: frequent_first(value, indexes[key]) for key, value in frequencies.iteritems()} return min(combined.iteritems(), key=lambda t: (-t[1].frequent, t[1].first)) events = [123,123,456,456,456,123, 1, 2, 3, 2, 3] print(most_frequent_first(events))
>>> print(most_frequent_first(events)) (456, frequent_first(frequent=3, first=4))
使用collections.counter
collections.counter
>>> import collections >>> events = [123,123,456,456,456,123] >>> counts = collections.Counter(events) >>> print counts Counter({456: 3, 123: 3}) >>> mostCommon = counts.most_common() >>> print mostCommon [(456, 3), (123, 3)]
这是最难的部分。
>>> from collections import Counter >>> events = [123,123,456,456,456,123] >>> c = Counter(events) >>> idxs = {k: v for v,k in enumerate(events)} >>> sorted(c.items(), key=lambda (k,v): (-v, idxs[k])) [(456, 3), (123, 3)]
接近
查找最常见的项目(计数器。最常见)。然后在具有最小索引的候选项中查找该项(枚举到索引字典中,最小值为{index:key}.iteritems())。
代码
从@gnibbler和@Jeff那里大肆偷窃:
结果
代码
一段更好的代码将为您提供频率和索引,显示代码工作正常。下面是一个使用命名元组的实现:
结果
使用
collections.counter
这是最难的部分。
相关问题 更多 >
编程相关推荐