Tuesday, December 30, 2008

关系去重复

起因:

        如果在关系数据库表格中发现某两个字段的数据一一对应相同,便认为是重复.要求去重。

思路:

    正常的方式是循环好几次做比对,实现起来繁琐切浪费性能,这里一种较为简单的处理办法于。

步骤:

一、基本思路:

        将此问题抽象为关系去重,两个字段之间认为是一种逻辑关系,如果两个字段都对应完全相同,则认为关系重复。

二、算法:

       

#-*- encoding: gb2312 -*-

 

import os, sys, string

import MySQLdb

 

try:

    conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')

except Exception, e:

    print e

    sys.exit()

 

# 获取cursor对象来进行操作

cursor = conn.cursor()

# 构建select语句

sql = select field1,field2 from table

cursor.execute(sql)

alldata = cursor.fetchall()

# 如果有数据返回,就循环输出, alldata是有个二维的列表

if alldata:

# 去掉重复的关系

    alldata = list(set(alldata))

    for i in alldata:

        print i[0],i[1]

cursor.close()

conn.close()

Tags: 算法


Tuesday, December 23, 2008

python提取列表里重复数据性能优化

列表内容限于文本或者数字。

def foo(alist):
    """
        extract the repeat item out of a list
    """
    d = dict()
    sd = dict()
    for i in alist:
        if id(i) not in d:
            d[id(i)] = ''
        else:
            sd[i] = ''
    return sd.keys()

因为在python里相同的串或者数字为同一个对象,所以使用id来作为hash算法,放到字典里去做对比,而不是直接对比内容本身,因而提高一定的性能。

Tags: python, 算法


Wednesday, December 17, 2008

月亮彩虹

彩虹看了无数,但是月亮彩虹还是第一次。
在极难得的冬夜,在温度很低的条件下,满月的时候,天空晴朗的时候,淡淡的云彩很薄的时候,有时才能看到七彩的月亮彩虹,对地点据称也又要求,西半球唯一的月亮彩虹的地方是英国的肯塔基州。因此并不是所有人都有机会看到此奇景。

上周五晚上回家比较晚,居然看到月亮彩虹,非常的漂亮,急忙回家里拿相机下楼拍照,这个国产相机无法捕捉到当时的真实场景,不过也算奇观了。








Tags: 生活