python - 每个值有多个键,有特殊要求
问题描述
我有d
一个带有现有字典的示例:
x = d['a'] = d['b'] = d['c'] = (1, 2) # Too verbose
我想要的是这样的:
x = d['a','b','c'] = (1, 2) # Would be ideal but yields d[('a','b','c')]
但是,这不会重现该示例,因为它将一个元组分配('a','b','c')
为键。
我知道.update()
ordict.fromkeys()
方法,但都不合适。第一个它不返回任何东西,第二个它除了不返回(1,2)
x 之外还创建一个新的 dict。
简而言之,我想要这样的表达:
x = ... = (1,2)
它将分配(1,2)
给 keys 'a'
,'b'
并且'c'
仍然d
将值返回给x
.
这是一个讲座/尝试最大化我的代码的一致性和可读性。
解决方案
您将需要一个继承自dict
并执行所需操作的类,例如以下示例:
class MyDict(dict):
def __setitem__(self, key, value):
if isinstance(key, tuple):
for arg in key:
super(MyDict, self).__setitem__(arg, value)
d = MyDict()
x = d["a", "b", "c"] = (1, 2)
x == d["a"] == d["b"] == d["c"] == (1, 2) # True
推荐阅读
- python - 带有 Flask 的 pytest 找不到模块
- sql-server - SQL - 添加所有以前的列和当前列,没有滞后和领先
- java - Update the Key of a Map
- security - Directory permissions under /var/lib/kubelet/pods
- php - PDO SQL select from_user = user1 to_user = user2 反之亦然,例如 from_user = user2 to_user = user1?
- anylogic - How to simulate AGV charging time?
- tensorflow - Add data to tf.data.Dataset API in batches
- c# - 如何比较两个共享的属性上的两个 HashSet?
- javascript - 只有当输入按特定顺序填写时,才能正确计算百分比
- mongodb - 集合 2 字段上的 Mongo 聚合过滤器