我们可以理解吗?

凯文·梅

我有一个清单:

lst = [1, 1, 3, 5, 1, 4, 4]

预期的输出(键是数字,值是这些数字的索引):

{1: [0, 1, 4], 3: [2], 5: [3], 4: [5, 6]}

好吧,我知道有很多方法可以实现这一目标。

res = defaultdict(list)
for idx, e in enumerate(lst):
    res[e].append(idx)

要么:

res = {}
for idx, e in enumerate(lst):
    res.setdefault(e, []).append(idx)

我想知道我们能否通过dict理解来实现这一目标。纯娱乐 :)。


效率并不重要。(最好是O(n))。

丹妮·梅塞乔

我认为最有效的是:

from itertools import groupby
from operator import itemgetter

lst = [1, 1, 3, 5, 1, 4, 4]

res = { k : [i for i, _ in group] for k, group in groupby(sorted(enumerate(lst), key=itemgetter(1)), key=itemgetter(1))}
print(res)

输出量

{1: [0, 1, 4], 3: [2], 4: [5, 6], 5: [3]}

这是O(NlogN)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们可以使用Notepad ++解码URL吗?

来自分类Dev

我们可以得到R中的因子矩阵吗?

来自分类Dev

我们可以在Python中使用C代码吗?

来自分类Dev

我们可以下载SoundCloud数据吗?

来自分类Dev

我们可以保存特定的NSManagedObject吗?

来自分类Dev

我们可以从SKSpriteNode获取图像名称吗?

来自分类Dev

我们可以将我们的编程放在android的doInBackground()中吗

来自分类Dev

我们可以更改Java的主要方法吗?

来自分类Dev

我们可以在Java中模拟Web容器吗?

来自分类Dev

我们可以在函数内部声明函数吗?

来自分类Dev

Oracle序列-我们可以回滚序列吗

来自分类Dev

我们可以提交已经与master合并的分支吗?

来自分类Dev

我们可以在绘图中添加文字吗?

来自分类Dev

我们可以在裸仓库中合并分支吗?

来自分类Dev

我们可以从ember js中的组件路由吗?

来自分类Dev

我们可以再次利用相同的websocket连接吗?

来自分类Dev

我们可以在多列上使用NOT IN吗?

来自分类Dev

我们可以在文件中存储多个对象吗?

来自分类Dev

我们可以为WCF做URL重写吗

来自分类Dev

我们可以用Maybe monad还是Continuation monad来理解错误monad吗?

来自分类Dev

我们可以缩短/ etc / sudoers中的脚本吗?

来自分类Dev

我们可以确定MVC EnableCors的来源吗?

来自分类Dev

我们可以编写Visual Studio Code扩展吗?

来自分类Dev

我们可以重用Gson对象吗?

来自分类Dev

我们可以将密钥用作AES的IV吗?

来自分类Dev

我们可以在url参数中传递null吗?

来自分类Dev

我们可以设置没有密码的根吗?

来自分类Dev

我们可以关闭MouseEvents吗?

来自分类Dev

我们可以在“Quickblox”中重新加入我们错过的群组通话吗?

Related 相关文章

热门标签

归档