Python中文
首页
教程
问答
标签
搜索
登录
注册
代码工作得很好,但似乎不是很Pythonic如何改进这个字典的创建和从该字典创建组合?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有两个字典,我用下面的代码把它们变成了一个列表字典。它是有效的,但它似乎是非Python的方式来做这件事。基本上,这是丑陋的,将需要更新,如果我的其他任何一个字典得到更新。你知道吗</p> <pre><code>KeyWeight = {x: MCNWeight[AttributeName[x]] for x in AttributeName.keys()} list1 = [] list2 = [] list3 = [] list4 = [] list5 = [] list6 = [] list7 = [] list8 = [] list9 = [] for x, y in KeyWeight.iteritems(): if y == 1: list1.append(x) elif y == 2: list2.append(x) elif y == 3: list3.append(x) elif y == 4: list4.append(x) elif y == 5: list5.append(x) elif y == 6: list6.append(x) elif y == 7: list7.append(x) elif y == 8: list8.append(x) elif y == 9: list9.append(x) KeyWeight = {1: list1, 2: list2, 3: list3, 4: list4, 5: list5, 6: list6, 7: list7, 8: list8, 9: list9} </code></pre> <p>之后,我有了一个非常粗略的嵌套for循环,它创建了该字典的所有可能的组合(如下所示)。它给出了我想要的结果,而且跑得很快,但我总觉得有更好的方法。你知道吗</p> <p>非常感谢您的帮助!你知道吗</p> <pre><code>MasterMCN = [] MCNs = None for each1 in KeyWeight[1]: MCNs = each1 for each2 in KeyWeight[2]: MCNs2 = MCNs + '-' + each2 for each3 in KeyWeight[3]: MCNs3 = MCNs2 + '-' + each3 for each4 in KeyWeight[4]: MCNs4 = MCNs3 + '-' + each4 for each5 in KeyWeight[5]: MCNs5 = MCNs4 + '-' + each5 for each6 in KeyWeight[6]: MCNs6 = MCNs5 + '-' + each6 for each7 in KeyWeight[7]: MCNs7 = MCNs6 + '-' + each7 for each8 in KeyWeight[8]: MCNs8 = MCNs7 + '-' + each8 for each9 in KeyWeight[9]: MCNs9 = MCNs8 + '-' + each9 MasterMCN.append(MCNs9) </code></pre> <p>编辑: 多亏了摩西的回答,我才摆脱了讨厌的for循环。下面是更好的版本。你知道吗</p> <pre><code>for weight in sorted(KeyWeight.keys()): if not MasterMCN: MasterMCN = KeyWeight[weight] else: iter_prod = itertools.product(MasterMCN, KeyWeight[weight]) MasterMCN = ['-'.join(x) for x in iter_prod] </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>为什么不简单地使用一个列表列表,用y作为索引?你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
1 回答
如何添加表示整数的擦边字符串?
5 回答
如何添加要在Bokeh中使用的新font.ttf文件?
5 回答
如何添加要显示的矩阵XY轴编号和XY轴
7 回答
如何添加计数?
5 回答
如何添加计数器函数?
7 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
7 回答
如何添加计数器来跟踪while循环中的月份和年份?
8 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
9 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
4 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
8 回答
如何添加评论拉梅尔亚姆
1 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
8 回答
如何添加谷歌地点自动完成到Flask?
5 回答
如何添加超时、python discord bot
8 回答
如何添加超过1dp的检查
7 回答
如何添加距离方法
1 回答
如何添加跟随游戏的敌人精灵
9 回答
如何添加路径以便python可以找到程序?
7 回答
如何添加身份验证/安全性以使用happybase访问HBase?
7 回答