我有一本字典:
bank_accts={accno:{"Name":"<str>","Balance":<num>}, repeat}.
我需要运行一个函数,用户可以通过按帐号(accno)、名称或余额排序来查看所有帐户。在
我有一个if,elif,else语句,我让sort by accno工作。我似乎无法按姓名或余额排序。我看过一些复杂的代码,但无法按我需要的方式运行。所以我决定尝试将所有的“Name”值放入一个列表中,然后对其进行排序;但是,问题是每个值都被放入一个单独的列表中,每个字符都是分开的。在
任何帮助我们都深表感激。我是新来的,几周后我将参加一个学习python的训练营。老师更像是谷歌的答案,所以我在努力学习。谢谢!在
^{pr2}$
您的主词典的关键字是accno。 创建2个索引字典,其中name和balance作为键,accno作为值列表的元素。(因为名称或余额可以多次出现)
每次在主字典中插入时,也在右键下的索引dict中插入。在
每次从prim删除。dict,也从索引中删除使用name和balance作为键的dicts。当名称或余额的列表为空时,删除索引的整个元素。在
现在您可以简单地从每个dict中对键进行排序。这是(正常的)“数据库索引”。在
感谢您的输入!我喜欢地毯吸烟者的回答。我自己也提出了下面的解决方案,并将重复elif对我的另一个值“Balance”的陈述:
诀窍是在^{} 函数中使用
key
参数;这将允许我们使用数据结构中的任何键作为排序的比较值。在您要做的另一件事是有效地将程序分成三个或多或少独立的部分:
如果你不这样做,你最终会重复你自己。在你的例子中,你在两个地方循环并打印出
bank_acct
现在如果你想以后改变什么呢?你必须在两个地方改变它;-)以下是添加了注释的完整示例:
请注意这个函数现在是如何分为三个独立的部分,即现在可以移动到它们自己的功能的部分。在
相关问题 更多 >
编程相关推荐