提取特定列并在Python中从字典中对它们进行分组

时间:2014-11-05 12:12:30

标签: python mysql python-2.7 mysql-python

我想提取特定列,并使用MySQLdb从记录中对它们进行分组。我写了以下代码:

import _mysql
cdb=_mysql.connect(host="myhost",user="root",
                  passwd="******",db="my_db")
qry = "select col1,col2,col3,col4,col5,col6 from mytable"

cdb.query(qry)

resultset = cdb.store_result()

records = resultset.fetch_row(0,1) # 0 - no limit, 1 - output is in dictionary form

我想从记录中仅提取3列:col1,col3和col4,并希望使用这三列创建唯一值组,即(col1,col3,col4)的所有唯一组合。我知道我必须使用set()数据类型来查找唯一值,我尝试使用它,但我没有找到任何成功。让我知道什么是它的好解决方案。

我在数据库中有数千条记录。我按以下方式获取记录的输出:

({
    'col1':'data11',
    'col2':'data11',
    'col3':'data13',
    'col4':'data14',
    'col5':'data15',
    'col6':'data16'
},
{
    'col1':'data21',
    'col2':'data21',
    'col3':'data23',
    'col4':'data24',
    'col5':'data25',
    'col6':'data26'
})

1 个答案:

答案 0 :(得分:1)

我已经提出了这个解决方案:

def filter_unique(records, columns):
    unique = set(tuple(rec[col] for col in columns) for rec in records)
    return [dict(zip(columns, items)) for items in unique]

它首先为每个记录生成一个列值元组,然后使用set()删除非唯一的出现,然后通过为元组中的每个值赋予名称来重构字典。

这样称呼:

filtered_records = filter_unique(records, ['col1','col2','col3'])

免责声明:我自己是初学者,所以我的解决方案可能不是最好的或最优化的。