历史评论归档

使用问题 · 286 次浏览
197906+abcd张三 创建于 2020-03-05 11:08
~历史讨论归档。~

回复内容
small_snail 2020-05-01 22:40
#1
大佬,请教一点词典操作的问题。
我借鉴动作库写了个聚合搜索类型动作,使用词典维护引擎名和链接,同时也用词典键列表显示,供用户选择采用哪些引擎来搜索。
但是遇到个问题:某次添加新引擎键值对后,给用户展示的引擎列表顺序乱了。通过调试发现,多数时候新增的键值对都放在了词典首部,但异常的时候给放到词典尾部了。

编程菜鸟接触过点python,记得里面说字典是无序的,然后刚才进一步查了下,这里[1]说python字典中的乱序原因有2:数组扩容特性、散列冲突现象。
那quicker词典这里也是类似原因哈?在我的方案下,词典乱序是不是没有解呢?

我浏览了下动作库中的类似动作,发现“快搜”动作[2]中展示引擎选项是用的列表。感觉是一个解决思路,请问大佬还有其他思路么?

[1] https://blog.csdn.net/weixin_42681866/article/details/82785127
[2] https://getquicker.net/Sharedaction?code=06bc3199-955a-41f7-138f-08d738459453&allComments=true
帝幽悠 回复 small_snail 2020-05-02 08:00 :

1.Quicker中的词典变量,确实是无序的;

我是利用他每次取出获取键列表的结果固定每次存的时候,存出来的结果也是一样的;利用这个方式,将键取出排序,再讲对应的结果重新写入(覆盖)词典变量,就得到类似排序后的结果了;

在添加内容的时候你也可以用这种方式,让其添加到首部或者尾部,默认的增加键值确实是随机插入的吧;示例动作 你可以看前面这个动作的添加部分;

2.还有一种方式,就是管词典,用列表变量做呈现,排序;列表变量排序有个模块,可以可视化呈现拖动排序;

但是有个问题就是,列表删除或添加内容后和词典变量的处理需要一定的步骤

3.就是像“快搜”动作一样,直接用列表存数据也行,Quicker里用到的词典变量本身就是无序的,这个变不了;置于底层原理是什么我就不清楚了

small_snail 回复 帝幽悠 2020-05-02 08:43 :

感谢大佬回复!有的地方没太懂再请教一下哈。

1. “管词典”是个术语么,没太懂,是指用词典作存储和查找用,列表作呈现和编辑用?

2. 如果我上面的猜测无误的话,那“快搜”应该就是这样实现的。我对这个动作的理解是这样的:用configList显示可用引擎选项给用户,用户对引擎的添加或删除也是先作用到configList上,每次执行动作时会根据configList构建词典searchList,词典只用于最后的根据引擎名取出引擎链接。configList作状态使用,searchList不作状态使用,这样比较简单得避免了列表和词典内容的不一致。

多看了下“快搜”后发现,我想实现的都让大佬用更好的方式实现了┭┮﹏┭┮

帝幽悠 回复 small_snail 2020-05-02 09:06 :

嘿嘿,是我打错字啦😂

我想打“管词典”,不用在意词典里顺序是怎么样的,只用列表变量呈现顺序等,用户通过对列表变量进行操作,而动作内部通过一系列步骤,改变词典中的内容进行增删改。(只是设想,我还没用过这种方式)


我看快搜没用词典变量存储数据呀,用的不是列表变量的格式存的内容吗?里面的词典好像只是临时用一下,具体做什么作用没看出来;

small_snail 回复 帝幽悠 2020-05-02 09:33 :

搜嘎,明白啦(o´ω`o)ノ

的确,我觉得也算是临时使用吧

回复主贴