Python中文
首页
教程
问答
标签
搜索
登录
注册
比较dict值并弹出键
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一本大字典,它看起来像这样:</p> <p><code>my_dict = {'a': [-33.27, -2.12, 5.23], 'b': [-57.11, 9.82, -26.13], ...}</code></p> <p>所以键是字符串,值是浮动列表。</em></p> <p>我想做的是通过运行一个标准来减少它的大小,这个标准可以找到并删除一些冗余的key:value对。你知道吗</p> <p>伪码中的标准是:</p> <p><em>对于每个键i,找出dict中是否存在不同的键j:</em></p> <ul> <li><code>value_of_key_i[0] > value_of_key_j[0] and</code></li> <li><code>value_of_key_i[1] > value_of_key_j[1] and</code></li> <li><code>abs(value_of_key_i[2]) < abs(value_of_key_j[2])</code></li> </ul> <p>我为这个任务写的是:</p> <pre><code>to_remove = [] for ilcs, iloads in running_load.items(): for jlcs, jloads in running_load.items(): if iloads[0] > jloads[0] and iloads[1] > jloads[1] and abs(iloads[2]) < abs(jloads[2]): # print(iloads, jloads) to_remove.append(ilcs) break for i in to_remove: running_load.pop(i) </code></pre> <p>这确实有效,但是显式地遍历dict两次,并且弹出所需的额外for循环感觉效率低下。。你知道吗</p> <p>有更好的办法吗?使用生成器和<code>any()</code>这样做会更有效吗?你知道吗</p> <p>注:我的方法的另一个问题是它不能测试相等性,因为在某个点上,这些值将被测试为针对它们自己(是的,人们可以检查它和<code>continue</code>,但是…)</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以创建一个新字典,只在其中添加将保留的元素,而不是使用要删除的元素列表。你知道吗</p> <p>在初始阶段,我并没有找到降低O(n^2)复杂度的方法(将每个元素与其他元素进行比较),但是如上所述,排序会有所帮助。你知道吗</p> <p>另外,我认为您将从dictionary中的条目生成两个不同的列表,其中包含相同的内容(每个为一个列表)。与“将每个项目与其他项目进行比较”相比,这不应该算太多,但仍然有帮助。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
9 回答
我想从用户导入值,为此
5 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
8 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
10 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
3 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
9 回答
我想从第一个空lin开始解析文本文件
2 回答
我想从简历、简历中提取特定部分
1 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
6 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
10 回答
我想从网上搜集一些关于抵押贷款的数据
1 回答
我想从网站上删除电子邮件地址
3 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
8 回答
我想从网站中提取数据,然后将其显示在我的网页上
5 回答
我想从网页上提取统计数据。
4 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
1 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
7 回答
我想从课堂上打印字典里的键
8 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
1 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
8 回答