我有以下字典
mylist = [{'tpdt': '0.00', 'tmst': 45.0, 'tmdt': 45.0, 'pbc': 30, 'remarks': False, 'shift': 1, 'ebct': '0.00', 'tmcdt': '0.00', 'mc_no': 'KA20'},
{'tpdt': '0.00', 'tmst': 45.0, 'tmdt': 45.0, 'pbc': 30, 'remarks': False, 'shift': 1, 'ebct': '0.00', 'tmcdt': '0.00', 'mc_no': 'KA20'},
{'tpdt': '0.00', 'tmst': 55.0, 'tmdt': 55.0, 'pbc': 30, 'remarks': False, 'shift': 1, 'ebct': '0.00', 'tmcdt': '0.00', 'mc_no': 'KA23'},
{'tpdt': '0.00', 'tmst': 55.0, 'tmdt': 55.0, 'pbc': 30, 'remarks': False, 'shift': 1, 'ebct': '0.00', 'tmcdt': '0.00', 'mc_no': 'KA23'}]
我想获取字典列表中每个字典值“ KA20”和“ KA23”的键“ tmst”的总和。
您能对此提出建议吗?
您可以使用itertools.groupby
:
>>> for key, group in itertools.groupby(mylist, lambda item: item["mc_no"]):
... print key, sum([item["tmst"] for item in group])
...
KA20 90.0
KA23 110.0
请注意,groupby
要正常工作,mylist
必须按分组键进行排序:
from operator import itemgetter
mylist.sort(key=itemgetter("mc_no"))
问题内容: 我有一本字典,将3tuple映射到3tuple,其中key-tuple具有一些共同点 现在如何在字典中找到与(a,b, anyX )匹配的值 这是计算机生成的,因此非常大,需要花费精力来确定anyX。 那么,有什么好的方法可以做到这一点吗? 编辑:(f,g,),(f,,g)与tuple3的部分匹配也将有所帮助,但不是必需的。 问题答案: 可以说,如果您要传递缺少的密钥,则可以使用和:
问题内容: 码: 打印。我不确定该方法如何确定l中关键字的顺序。但是,我希望能够以“适当”的顺序检索关键字。当然,正确的顺序将创建列表。 和这个: 问题答案: 你可以使用OrderedDict(需要Python 2.7)或更高版本。 另外,请注意,由于dict你使用进行创建的操作已经忘记了元素的顺序,因此该操作无效。相反,你想使用。 如文档中所述,对于低于python 2.7的版本,你可以使用此配
问题内容: 我正在寻找一个有序的关联数组,即有序的字典的可靠实现。我想要按键而不是插入顺序排序。 更准确地说,我正在寻找一种int-to-float(或另一种用例是string-to-float)映射结构的节省空间的实现,该结构的结构是: 有序迭代为O(n) 随机访问为O(1) 我想到的最好的方法是将字典和键列表粘合在一起,使最后一个键按等分和插入顺序排列。 还有更好的主意吗? 问题答案: “随机
问题内容: 对Python来说还算是新手,仍然需要大量的信息。 我所见过的所有关于字典的文档都说明了通过键获取值的各种方法-但我正在寻找一种反之的pythonic方法-通过值获取键。 我知道我可以遍历键并检查它们的值,直到找到要查找的值,然后抓住键,但是我正在寻找直接途径。 问题答案: 没有直接路线。但是,使用列表理解非常容易。 如果您偶尔需要执行此操作,而又不建议将其编入索引,则不值得这样做,则
问题内容: 快速提问主要满足我对这个话题的好奇心。 我正在编写一些带有SQlite数据库后端的大型python程序,并且将来会处理大量记录,因此,我需要尽可能地优化。 对于一些功能,我正在字典中搜索关键字。我一直在使用“ in”关键字进行原型设计,并计划稍后返回并优化这些搜索,因为我知道“ in”关键字通常为O(n)(因为这仅表示python遍历整个列表并进行比较每个元素)。但是,由于python
问题内容: 这可能是一个愚蠢的问题,但是考虑到以下指示: 我将如何获得此列表: 换句话说,我希望字典中两个键/值对的所有组合都不能替换,而与顺序无关。 问题答案: 一种解决方案是使用: 编辑 :由于受欢迎的需求,这里是Python 3.x版本: