忽略关键字典python的一部分
我想要一个字典,其中的键是元组,比如(1,0)。但是,我希望(n,0)形式的所有键都能以类似的输出进行标识,如果我不必将(1,0)到(n,0)之间的所有元组作为字典中的键,那就太好了。有没有一个简单的方法可以做到这一点忽略关键字典python的一部分,python,dictionary,key,tuples,Python,Dictionary,Key,Tuples,我想要一个字典,其中的键是元组,比如(1,0)。但是,我希望(n,0)形式的所有键都能以类似的输出进行标识,如果我不必将(1,0)到(n,0)之间的所有元组作为字典中的键,那就太好了。有没有一个简单的方法可以做到这一点 dictionary = {(n, 1): [n, 3], (n, 2): [5, n], (n, 0): [0, n]} 如果要使用特殊规则生成dict,以处理实际上未存储在dict哈希表中的键,则需要创建一个子类dict,该子类实现: 由dict.\uuu getitem\
dictionary = {(n, 1): [n, 3], (n, 2): [5, n], (n, 0): [0, n]}
如果要使用特殊规则生成dict,以处理实际上未存储在dict哈希表中的键,则需要创建一个子类
dict
,该子类实现:
由dict.\uuu getitem\uuuu()
调用,以在键不在字典中时为dict
子类实现self[key]
像这样:
class SpecialDict(dict):
def __missing__(self, key):
if isinstance(key, tuple) and len(key) == 2 and key[1] == 0:
return [0, key]
raise KeyError(key)
我真的不明白您的示例应该如何工作,所以这里有一个不同的示例来演示:
>>> d = SpecialDict({(1, 1): [2, 3], (1, 2): [5, 4]})
>>> d[1, 1]
[2, 3]
>>> d[2, 2]
KeyError: (2, 2)
>>> d[20, 0]
[0, 20]
如果您为(n,0)
键存储了一个值,它将不会调用该键的\uuuu missing\uuuu
,允许您覆盖单个(n,0)
,而将其余部分保留为其特殊规则:
>>> d[42, 0] = [23, 23]
>>> d[42, 0]
[23, 23]
>>> d[23, 0]
[0, 23]
只需将值(1,0)复制到(n,0),然后从dict中删除元素(1,0)。如下所示:
dictionary[n,0] = dictionary[1,0]
del dictionary[1,0]
以此类推,但是为了识别类似的输出,必须使用set()将值转换为tuple,然后用键获取差异。例如:
for key in dictionary:
if set(key) - set(dictionary[key]) is set():
print("Similar key value pair")
用“n”作为键和值列表重建dict?您是想让所有
(n,0)
键共享一个值,还是想让任何(n,0)
键映射到[0,n]
,而不存储无限多的项?我希望它们都映射到[0,n]