具有单键和两个值的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,)转换为(字符串的)键

  • 稍后我还需要按kweight对列表进行排序,是否可以使用可以调用python排序函数的数据结构


  • 编辑:我想我应该扩展上面的例子。我想将(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)}