我正在尝试使用具有两个部分k1和k2的键来创建字典字典。 k1是实际键,k2是dict [k1,k2]的长度。在下面的示例中,k1是“ cat”,k2是10。k2只是值列表的大小,对键的唯一性没有贡献。
dict = {
cat, 10: [value1, value2, value3, ..., value10],
dog, 15: [value1, value2, value3, ..., value15],
zen, 15: [value1, value2, value3, ..., value15]
}
我所做的是,在没有k2的情况下实现了该字典,然后将k1和k2连接起来,这意味着密钥实际上是k1k2,从而导致了以下实现。
if key not in dict:
dict[key] = [value1]
else:
if value_n not in dict[key]:
dict[key].append(value_n)
for key in dict:
key = key + str(len(dict[key]))
现在,字典像这样显示。
dict = {
cat10: [value1, value2, value3, ..., value10],
dog15: [value1, value2, value3, ..., value15],
zen15: [value1, value2, value3, ..., value15]
}
由于我不想将k2存储在单独的数据结构中,如何在字典中实现多部分键?
最佳答案
不确定确切的用例是什么。但是在我看来,您可以选择以下几种方法之一。而这取决于“长度”键(k2)是创建列表的原因,还是仅仅是它的指示符。
您可以使用嵌套字典:
dict = {
'cat' : {10: [value1, value2, value3, ..., value10]},
'dog' : {15: [value1, value2, value3, ..., value15]},
'zen' : {15: [value1, value2, value3, ..., value15]}
}
因此,访问将为
dict['cat'][10]
,并且如果“长度”(k2)仅是长度的指示符,则此访问有效。您可以创建一个自定义类,该类将允许您访问“键”并指定您希望该值的长度。该类中的方法将类似于:
def method(self, key, length):
return self.__dict__[key][:length]
您可以使用元组作为密钥:
dict = {
('cat', 10) : [value1, value2, value3, ..., value10],
('dog', 15) : [value1, value2, value3, ..., value15],
('zen', 15) : [value1, value2, value3, ..., value15]
}
关于python - 用多部分键构造字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16334058/