gpt4 book ai didi

python - 当键是元组时访问字典的键并检查元组的元素是否相等

转载 作者:太空宇宙 更新时间:2023-11-04 06:02:10 26 4
gpt4 key购买 nike

我有一个字典,它以 (sourceIP, destinationIP) 为键,以 (number_of_packets) 为值。 dict输出如下

New dictionary contents
Key : Value
('A', 'B') : 400
('B', 'A') : 500
('A', 'C') : 10
('C', 'A') : 20

我需要遍历字典的键并检查第一个键中的第一个元素 (sourceIP) 是否是第二个键中的第二个元素 (destinationIP)。如果是,那么我应该添加 d[k1] 和 d[k2] 的值并删除 dict 中的第二行。即,我应该只使用 A --> B = 400 和 B --> A = 500,而不是使用 A --> B = 900。请建议我应该如何遍历 dict 的键并检查其中的元素元组?

最佳答案

你可以试试:

c = {('A', 'B')  :  400,('B', 'A')  :  500,('A', 'C')  :  10,('C', 'A')  :20}

c = {k:((c[k] if k in c else 0) + (c[k[::-1]] if (k[::-1]) in c else 0)) for k in set(map(lambda x: tuple(sorted(x)),c.keys()))}

这最后一行可以压缩成:

c = {k:(c.get(k,0) + c.get(k[::-1],0)) for k in set(map(lambda x: tuple(sorted(x)),c.keys()))}

迭代规范化键集,这种规范化包括对组成每个键的元组的元素进行排序。在每次迭代中,检查 map 中存在哪些关键排列并添加可用的排列。

关于python - 当键是元组时访问字典的键并检查元组的元素是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24256440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com