我想在 Python 中创建一个字典,其键将独立于它包含的元素的顺序。这是示例:
items = {1: 2, 2: 3, 4: 5}
comb = {(key1, key2): 0 for key2 in items.keys() for key1 in items.keys() if key1 != key2}
输出:
{(1, 2): 0, (1, 4): 0, (2, 1): 0, (4, 2): 0, (4, 1): 0, (2, 4): 0}
但我只想拥有:
{(1, 2): 0, (1, 4): 0, (2, 4): 0}
所以键 (1, 2) 应该等于 (2, 1)。对于长度超过 2 的元组(例如 (2, 3, 4) = (4, 3, 2)),这也需要成立。
最佳答案
>>> {keys: 0 for keys in itertools.combinations(items, 2)}
{(1, 2): 0, (2, 4): 0, (1, 4): 0}
与dict.fromkeys
(仅当值不可变时才使用 dict.fromkeys
;该值由所有条目共享):
>>> dict.fromkeys(itertools.combinations(items, 2), 0)
{(1, 2): 0, (2, 4): 0, (1, 4): 0}
>>> dict.fromkeys(itertools.combinations(items, 3), 0)
{(1, 2, 4): 0}
关于python - 其键独立于它包含的元素顺序的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21202429/