SymmetricPairMapping
- class PlasmaCalcs.tools.iterables.SymmetricPairMapping(mapping={})
Bases:
objectmapping with keys pairs, where order of the pair doesn’t matter.
mapping: dict of {(obj1, obj2): value}
The keys (obj2, obj1) and (obj1, obj2) will be treated the same way,
when getting/setting/deleting items, and when checking if key in self.[EFF] For efficiency, only stores one of these pairs (the one where obj1 <= obj2).Methods
__iter__()iterate over self.items (not self.keys).
check that ss is a symmetric mapping; crash with InputError otherwise.
clear()remove all known items from self.
copy()return a shallow copy of self.
return SymmetricPairMapping from symmetric dict ss,
items()keys()pop(key, default)remove self[key], and return its value.
update(other)update self with other.
values()_sanitize_key(key)return sanitized key (obj1, obj2) such that obj1 <= obj2.
- __iter__()
iterate over self.items (not self.keys).
- _sanitize_key(key)
return sanitized key (obj1, obj2) such that obj1 <= obj2.
- static assert_symmetric_mapping(ss)
check that ss is a symmetric mapping; crash with InputError otherwise.
I.e., ensure for all keys key12=(obj1, obj2) in ss, key21=(obj2, obj1) is also in ss,and ss[key12] == ss[key21].
- clear()
remove all known items from self.
- copy()
return a shallow copy of self.
- classmethod from_symmetric_dict(ss)
return SymmetricPairMapping from symmetric dict ss,
which contains both ((obj1, obj2): val12) and ((obj2, obj1): val21) for each pair of objs,with val12 == val21 confirmed here first (crash with InputError if ss not symmetric).
- pop(key, default)
remove self[key], and return its value. if key not in self, return default.
- update(other)
update self with other.
other: dict of {(obj1, obj2): value}