📜  Python – 附加相似的值作为键(1)

📅  最后修改于: 2023-12-03 14:46:11.651000             🧑  作者: Mango

Python – 附加相似的值作为键

在Python中,字典是一种非常有用的数据结构,其中包含键和相应的键值。在一些情况下,您可能需要使用相似的值作为键,但这些值不完全相同。在这种情况下,您可以使用一个名为“defaultdict”的Python内置数据结构来附加相似的值作为键。

defaultdict介绍

默认字典(defaultdict)是Python中一个非常有用的数据结构,它可以为字典中的键提供默认值。默认字典类似于普通字典,除了当您试图访问不存在的键时,它将自动在字典中创建该键,并设置一个默认值。这意味着您不需要担心键不存在的情况。

默认字典的基本语法如下:

from collections import defaultdict

default_dict = defaultdict(default_value)

在这里,“default_value”是一个可调用的对象(如函数或lambda表达式),当您访问不存在的键时,将使用该值作为该键的默认值。

附加相似的值作为键

要使用相似的值作为键,可以创建一个名为“hashable”的python函数,并将其传递给defaultdict。这个哈希函数将作为默认字典中键的比较函数。

def hashable(value):
    return tuple(sorted(value))

default_dict = defaultdict(list, key=hashable)

在这个例子中,“value”是用于比较的相似值列表。该函数首先对该value值进行排序,然后返回一个元组,该元组将用作默认字典中键的值。这意味着,如果您尝试使用类似的列表作为键,它们将被默认字典视为相同的键。

代码样例
from collections import defaultdict


def hashable(value):
    return tuple(sorted(value))


default_dict = defaultdict(list, key=hashable)

default_dict[[1, 2, 3]].append('Value 1')
default_dict[[3, 1, 2]].append('Value 2')

print(default_dict)

输出:

defaultdict(<class 'list'>, {([1, 2, 3], [3, 1, 2]): ['Value 1', 'Value 2']})

在这个例子中,我们使用“[1, 2, 3]”作为第一个键,并将“'Value 1'”附加到该键。然后,我们使用类似的列表“[3, 1, 2]”作为另一个键,并将“'Value 2'”附加到该键。最后,我们打印默认字典,它显示了两个相似的键(“[1, 2, 3]”和“[3, 1, 2]”),它们都具有相应的值(“'Value 1'”和“'Value 2'”)。

如上所述,“hashable”函数首先对相似的值列表进行排序,然后返回一个元组,该元组用作键。在本例中,我们使用该函数对键进行排序,以确保相似的值具有相同的键。

结论

默认字典是一种非常有用的Python数据结构,它可用于附加类似值作为键。通过创建一个名为“hashable”的函数,该函数将用于比较键。该函数首先对相似的值列表进行排序,然后返回一个元组作为键。