在Python中将字典列表划分为子字典

时间:2014-11-06 05:42:03

标签: python python-2.7 dictionary

我在词典列表中使用MySQLdb从我的数据库中获取'n'个记录。我想根据数据将列表细分为不同的子列表。 e.g。

col1    |   col2    |   col3    |   col4

data11  |   data12  |   data13  |   data14
data11  |   data12  |   data23  |   data24
data11  |   data13  |   data33  |   data34
data11  |   data13  |   data43  |   data44
data21  |   data12  |   data53  |   data54
data21  |   data12  |   data63  |   data64
data21  |   data13  |   data73  |   data74
data21  |   data13  |   data83  |   data84

我想将此数据转换为:

col1    |   col2    |   col3    |   col4

第一个清单:

data11  |   data12  |   data13  |   data14
data11  |   data12  |   data23  |   data24

第二个清单:

data11  |   data13  |   data33  |   data34
data11  |   data13  |   data43  |   data44

第3个清单:

data21  |   data12  |   data53  |   data54
data21  |   data12  |   data63  |   data64

第四个清单:

data21  |   data13  |   data73  |   data74
data21  |   data13  |   data83  |   data84

有没有超级棒的Python方法可以将多个列分组并将列表分成多个列表。

编辑:

目前,我有:

[{ "col1":"data11","col2":"data12","col3":"data13","col4":"data14"
},
...
]

我想根据col1和col2中的值将这些数据细分为字典列表。

您可以从上表中了解它。我猜输出将是[[{}]]格式。

1 个答案:

答案 0 :(得分:1)

使用词典词典:

super_awesome = {}
for row in rows:    # these are the rows from MySQLdb
    col1 = super_awesome.get(row['col1'], {})    # get col1 or an empty dict
    col2 = col1.get(row['col2'], [])             # get col2 or an empty list
    col2.append(row)                             # append row to (col1,col2)
    col1[row['col2']] = col2                     # put col2 into col1
    super_awesome[row['col1']] = col1            # put col1 into super_awesome

完成后,super_awesome会为每个唯一col1值添加一个条目,并且每个条目都有一个每个唯一(col1,col2)值的条目。反过来,这些条目每个都有(col1,col2)对的行列表。