繁体   English   中英

以元组为键的字典

[英]dictionary with tuple as key

目前,我创建了一个使用元组对作为键的字典。 我的字典目前分别计算诸如(a,b)和(b,a)之类的对,但是我最终想要(a,b)==(b,a)。

目前,我的部分代码如下所示:

final = collections.defaultdict(list)
for a,b in pairs:

    final[(a[0],b[0])].append((a[2],a[1]))
    final[(b[0],a[0])].append((b[2],b[1]))

添加字典之前,我是否需要检查(a,b)中的(b,a)是否已存在于字典中? 还是在字典全部修复后修复?

使用frozenset([a, b]) 集合的比较不分顺序,但相等,但是只有冻结的集合可以用作字典键,因为它们是不可变的。

如果a == b尽管您的密钥将等于frozenset([a]) 如果有问题,我们可以制定计划。

pairs = [frozenset([1,2]), frozenset([3,4]), frozenset([2,1]), 
frozenset([5,6]), frozenset([7,8]), frozenset([6,5])]

for pair in pairs:
    pair_count.update({pair: pair_count.get(pair, 0) + 1})

pair_count
{frozenset([5, 6]): 2, frozenset([1, 2]): 2, frozenset([8, 7]): 1, frozenset([3, 4]): 1}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM