Python中文
首页
教程
问答
标签
搜索
登录
注册
python中一个键的多个值
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>所以我的主要目标很简单,我希望在使用一个键时返回多个值。但是我有错误和混乱的行为。我是Python新手,所以我完全希望这个问题有一个简单的原因。</p> <p>我有一个对象列表,<code>list</code>,它只包含对象的索引。i、 e</p> <pre><code>1 2 3 4 etc.. </code></pre> <p>以及包含每个对象所属的组的文件,按相同顺序列出。文件是n行(n也是对象列表的长度)的单个值,即文件如下所示:</p> <pre><code>2 5 2 4 etc.. </code></pre> <p>意思是第一个宾语属于第二组,第二个宾语属于第五组,第三个宾语属于第二组,第四个宾语属于第四组。此文件将根据我的输入文件而更改。我尝试了以下两个建议(我能找到)。</p> <p><strong>编辑:</strong>我的最终目标:拥有一个以组号为键、以组中的对象为值的字典。</p> <p>我首先查看了StackOverflow<a href="https://stackoverflow.com/questions/3199171/<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>-multiple-values-for-one-key-in-python-dictionary">question</a>以寻求帮助,因为它非常相似,最后得到了以下代码:</p> <pre><code>def createdDict(list, file): f = open(file, 'r') d={} i=0 for line in f: groupIndex = int(line) if groupIndex in d: d[groupIndex].append(list[i]) else: d[groupIndex] = list[i] i +=1 print d f.close() </code></pre> <p>这个错误:</p> <pre><code>AttributeError: 'Element' object has no attribute 'append' </code></pre> <p><code>d[groupIndex]</code>只是一个字典,它的键和<code>groupIndex</code>也应该是一个整数。。不是我在脚本前面创建的类中的对象。(为什么会出现这个错误?)</p> <p>然后,在遇到这个<a href="https://stackoverflow.com/questions/10844282/appending-values-to-a-key-if-key-already-exists-python-jython?rq=1">other question</a>之后,我修改了代码,如下所示,因为我认为这是完成任务的另一种方法。我的代码是这样的:</p> <pre><code>def createdDict(list, file): f = open(file, 'r') d={} i=0 for line in f: groupIndex = int(line) if groupIndex in d: d.setdefault('groupIndex', []).append(list[i]) else: d[groupIndex] = list[i] i +=1 print d f.close() </code></pre> <p>这段代码并不是以错误或我想要的结尾,而是(我相信)组中的最后一个对象。。。所以<code>print d</code>给我键和放在组中的最后一个对象(而不是期望的:该组中的所有对象),然后终端随机弹出<code>groupIndex</code>,然后是<code>list</code>中的所有对象。</p> <p>我的问题:我到底错过了什么?人们对我所链接的问题的答案进行了投票,因此他们很可能是正确的,而我很可能执行错误。我不需要对这两个过程都进行更正,但最有效的解决方法是将多个值附加到一个键上。要完成这项任务,什么样的方法最管用?</p> <p><strong>编辑2:</strong>如果这有帮助,这里是第一个方法引用错误的类。我不知道它如何将代码的任何部分定义为类的一部分。我还没有真正开发它,但我完全赞成答案,所以如果这有助于查找错误:</p> <pre><code>class Element(object): def __init__(self, globalIndex): self.globalIndex = globalIndex def GetGlobalIndex (self): return self.globalIndex </code></pre> <p><code>globalIndex</code>是对象(元素)的单独索引。对于我当前的问题,我将获取这些元素的列表(这是前面提到的列表),并根据我的文件(前面也提到过)将它们分组为更小的组。为什么我认为这不重要,列表本质上是一个整数的计数。。。它会怎么弄乱我的代码?</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>只是使用</p> <pre><code>d.setdefault(groupIndex, []).append(list[i]) </code></pre> <p>这将检查<code>groupIndex</code>是否在<code>d</code>中,因此您不需要<code>if groupIndex in d:</code>行。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
5 回答
如何在乒乓球游戏中阻止球
1 回答
如何在乘法和模中不乘空间?
9 回答
如何在乘法和除以2个不同的数字之间进行交换?
7 回答
如何在也是数据一部分的单个字符上拆分大字符串
9 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
5 回答
如何在事件wxWidgets中传递自定义数据
4 回答
如何在事件中使用lambda i=i?
6 回答
如何在事件中心只接收最近的数据
1 回答
如何在事件发生之前保持云函数运行?
10 回答
如何在事件发生后使页面重定向到同一页面
5 回答
如何在事件回调之间保持python生成器的状态
8 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
2 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
7 回答
如何在事件处理程序中访问外部对象?
7 回答
如何在事件循环中将协程打包为正常函数?
1 回答
如何在事件循环之外运行协同程序?
6 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
10 回答
如何在事件文件中只保留一份摘要?
1 回答
如何在事件模板中添加事件
6 回答