许多语言都提供标准库,其中提供字典或二叉树映射类型。许多这些数据结构实现都提供了根据某些条件将数据结构拆分为一对数据结构的功能。
这称为分区操作。Rust 称之为“分裂”。C++map
类型具有用于与键进行比较的“下限”和“上限”操作。标准库还提供了存在于std::algorithm
.
我看不到在 Python 中执行此操作的理想方法。我设法想出了一种手动方法来做到这一点,但我真的不喜欢这段代码,因为它没有将 adict
分成两部分,而是将其中的一部分拆分,然后再将其拆分为另一部分,从而导致脆弱(和重复)的代码。
map = {
...
}
map_part_1 = {
key: value for key, value in map.items() if <condition>
}
map_part_2 = {
key: value for key, value in map.items() if not <condition>
}
不太好,对吧?有没有更好的办法?
只是一个更短的助手(比您的答案),它仅对每个项目评估一次条件:
如果您想保持第一个字典是真实评估条件的字典,第二个字典是错误评估条件的字典的顺序,请替换
return dicts
为return dicts[::-1]
。在线尝试这个!
我不相信这是最好的方法。它可以工作,但需要编写一个辅助函数。
然后将其与 a 一起使用
lambda
,如下所示:这个测试用例证明它是有效的。
但是也许有一些更好的解决方案不需要我们编写自己的辅助函数来完成它?
也许我遗漏了一些东西,但你可以在一个循环中完成此操作:
印刷:
如果你想修改输入字典,你可以使用
dict.pop
: