Python中对数据的表示有两种形式,一种是有序的数据集,比如字符串列表元组,这些数据集都是有序的,具有更深层次的内部结构,支持排序、索引、连接、复制、检测成员等操作。还有一种是无序的数据集,包括集合字典。无需集合中的数据不存在先后关系,并且互不相同。使用花括号创建非空集合a = {1, 2, 4},创建空集合只能用set()函数。因为在python内部,无论是哪种形式创建,最终都是以set()的形式实现。而{}用于表示空字典。字典是由大量键值对(key-value pair)组成的集合,用法就是通过键(key)访问对应的值(value)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> s = {2,3,4,5}
>>> print s
set([2, 3, 4, 5])

>>> ss = {2,3,3,3,4,5}
>>> print ss
set([2, 3, 4, 5])
>>> 3 in s
True

>>> d = {'Louis':23, 'Dolly':34, 'Caren':45, 'Hans':'no'}
>>> print d
{'Hans': 'no', 'Louis': 23, 'Caren': 45, 'Dolly': 34}
>>> d['Louis']
23

集合去重方法

1
2
3
4
5
numbers = [8,2,2,2,3,4,6,7]
numbers_new = list(set(numbers))

# 为了保持顺序,用index排序
numbers_new.sort(key = numbers.index)

列表去重方法,将列表数据当作字典的键写入字典,依据字典键不可重复的特性去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#coding:utf-8
path_0401_HT = 'E:/Slides/LBS/TaxiData/201004010_HT.txt'
ciku=open(path_0401_HT,'r') #打开需要去重文件
xieci=open(path_0401_HT_uni,'w') #打开处理后存放的文件
cikus=ciku.readlines()
list2 = {}.fromkeys(cikus).keys() #列表去重方法,将列表数据当作字典的键写入字典,依据字典键不可重复的特性去重
i=1

for line in list2:
if line[0]!=',':
# print line[0:-1].decode('utf-8').encode('gbk') #数据量太多,会出现编码报错
print u"写入第:"+`i`+u" 个"
i+=1
xieci.writelines(line)
xieci.close()

Reference:
[1]: https://wizardforcel.gitbooks.io/sjtu-cs902-courseware/content/129.html ‘Python中数据的表示和处理’
[2]: https://www.the5fire.com/python-remove-duplicates-in-list.html ‘Python对list去重的各种方法’