Python中文
首页
教程
问答
标签
搜索
登录
注册
附加到python对象字典中的对象列表
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在创建一个类,其中包含第二个对象的列表和第二个对象的amount值的总和。这本身就是有效的。但是我需要按类别对它们进行分组,所以我创建了一个字典。不过,这似乎很简单,每当我将一个对象附加到一个列表时,它就会附加到字典中的所有列表。你知道吗</p> <pre><code>class objA: amount = 0 listBs = [] category = "" def __init__(self,category): self.category = category class objB: amount = 0 category = "" otherproperty = "" mydict = {} b1 = objB() b1.amount = 1 b1.category = "foo" b1.otherproperty = "abc" if(b1.category not in mydict.keys()): mydict[b1.category] = objA(b1.category) mydict[b1.category].listBs.append(b1) mydict[b1.category].amount += b1.amount b2 = objB() b2.amount = 2 b2.category = "bar" b2.otherproperty = "xyz" if(b2.category not in mydict.keys()): mydict[b2.category] = objA(b2.category) mydict[b2.category].listBs.append(b2) mydict[b2.category].amount += b2.amount print("foo amount: " + str(mydict["foo"].amount) + " - foo len: " + str(len(mydict["foo"].listBs))) print("bar amount: " + str(mydict["bar"].amount) + " - bar len: " + str(len(mydict["bar"].listBs))) </code></pre> <p>当我运行上面的代码时,我得到了foo的预期数量1和bar的预期数量2,但是这两个列表的len都是2,因为它们都包含b1和b2。你知道吗</p> <p>我把类对象拿出来,同样的原则工作只是附加到列表的dict上,所以下面的工作</p> <pre><code>dictoflists = {} dictoflists["key1"] = [] dictoflists["key1"].append("k1v1") dictoflists["key2"] = [] dictoflists["key2"].append("k2v1") dictoflists["key2"].append("k2v2") print(dictoflists) </code></pre> <p>输出:</p> <pre><code>{'key1': ['k1v1'], 'key2': ['k2v1', 'k2v2']} </code></pre> <p>有没有办法让这个工作或更好的解决方案?你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>更改<code>objA</code>类的定义,以便变量是在实例之前定义的,而不是在类本身上定义的</p> <pre><code>class objA: def __init__(self, category): self.category = category self.amount = 0 self.listBs = [] </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
1 回答
如何添加表示整数的擦边字符串?
4 回答
如何添加要在Bokeh中使用的新font.ttf文件?
6 回答
如何添加要显示的矩阵XY轴编号和XY轴
10 回答
如何添加计数?
3 回答
如何添加计数器函数?
9 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
10 回答
如何添加计数器来跟踪while循环中的月份和年份?
6 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
2 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
9 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
3 回答
如何添加评论拉梅尔亚姆
9 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
3 回答
如何添加谷歌地点自动完成到Flask?
7 回答
如何添加超时、python discord bot
8 回答
如何添加超过1dp的检查
5 回答
如何添加距离方法
2 回答
如何添加跟随游戏的敌人精灵
2 回答
如何添加路径以便python可以找到程序?
5 回答
如何添加身份验证/安全性以使用happybase访问HBase?
8 回答