具有单键和两个值的Python存储列表
我使用下面的代码部分具有单键和两个值的Python存储列表,python,python-2.7,Python,Python 2.7,我使用下面的代码部分 num_item = 3 for i in range(1,num_item+1): list(itertools.combinations(range(0,num_item), i)) 生成组合列表的步骤 [[(0,), (1,), (2,)], [(0, 1), (0, 2), (1, 2)], [(0, 1, 2)]] 我想将这些组合作为两个值的键:kvalue和kweight,如下例所示 key 1 : (0,) , value 1 : kvalue
num_item = 3
for i in range(1,num_item+1):
list(itertools.combinations(range(0,num_item), i))
生成组合列表的步骤
[[(0,), (1,), (2,)], [(0, 1), (0, 2), (1, 2)], [(0, 1, 2)]]
我想将这些组合作为两个值的键:kvalue和kweight,如下例所示
key 1 : (0,) , value 1 : kvalue = 8 kweight = 4
key 2 : (1,) , value 2 : kvalue = 10 kweight = 5
key 3 : (2,) , value 3 : kvalue = 15 kweight = 8
编辑:我想我应该扩展上面的例子。我想将(0,1,2)存储为键7,该键有两个值:kvalue=-1和kweight=9
key 1 : (0,) , value 1 : kvalue = 8 kweight = 4
key 2 : (1,) , value 2 : kvalue = 10 kweight = 5
key 3 : (2,) , value 3 : kvalue = 15 kweight = 8
key 4 : (0, 1) , value 4 : kvalue = 18 kweight = 9
key 5 : (0, 2) , value 5 : kvalue = -1 kweight = 4
key 6 : (1, 2) , value 6 : kvalue = -1 kweight = 5
key 7 : (0, 1, 2) , value 7 : kvalue = -1 kweight = 9
是否有良好的数据结构来存储上述数据
如何将(0,)转换为(字符串的)键
你其实不需要。由于(0,)
是一个元组,并且元组是可散列的,因此它可以直接用作键
稍后我还需要按kweight对列表进行排序,是否可以使用可以调用python排序函数的数据结构
是否有良好的数据结构来存储上述数据
如何将(0,)转换为(字符串的)键
你其实不需要。由于(0,)
是一个元组,并且元组是可散列的,因此它可以直接用作键
稍后我还需要按kweight对列表进行排序,是否可以使用可以调用python排序函数的数据结构
您可以使用嵌套dict或创建值对象
{0:{'value':1, 'kvalue':8, 'kweight':4}}
或
您可以使用嵌套dict或创建值对象
{0:{'value':1, 'kvalue':8, 'kweight':4}}
或
基本上是生成2^n-1个数字,其中n是num\u项。。 因此,您可以使用位操作来获得上述结果 将i从0迭代到2^n-1:
查找i的二进制文件:
检查每个设置位,该位的位置(从1开始)将为您提供所需的组合。您基本上生成了2^n-1个数字,其中n是num\u项。。 因此,您可以使用位操作来获得上述结果 将i从0迭代到2^n-1:
查找i的二进制文件:
检查每个设置的位,该位的位置(从1开始)将为您提供所需的组合。因此,类似于
{(0,):(8,4)}
?问题不是很清楚。你想要一本从int
s到元组(int,int)的字典吗?所以,像{(0,):(8,4)}
?问题不是很清楚。你想要从int
s到元组(int,int)的字典吗?我选择namedtuple。如何为into namedtuple设置“键”?比如说,从集合导入namedtuple Bag=namedtuple('Bag','v w')pt1=Bag(8,4)pt2=Bag(10,5)如何将(0,)设置为pt1的键,将(1,)设置为pt2的键?您不会这样做。您将使用它们作为dict中的键,并将namedtuple实例作为值。如何为into namedtuple设置“键”?比如说,从集合导入namedtuple Bag=namedtuple('Bag','v w')pt1=Bag(8,4)pt2=Bag(10,5)如何将(0,)设置为pt1的键,将(1,)设置为pt2的键?您不会这样做。您将使用它们作为dict中的键,并将namedtuple实例作为值。
class Value:
def __init__(self, value, kvalue, kweight):
self.value = value
self.kvalue = kvalue
self.kweight = kweight
{0:Value(1,8,4)}