笔记,字符串(3)

对上篇文章个例的补充、更新,更简洁、易懂,主要还是转换思路,用字典进行处理。最终效果和上次一致。涉及字典多方面的知识点。

 

#用字典进行处理

import csv
csvfile = open(r'F:\party\try2.csv', 'r')  #手动剔除不规则的首行
reader = csv.DictReader(csvfile)
print(reader)

names = []  #新建列表
f = open(r"F:\party\name.txt", "r")
lines = f.readlines()
f.close()
for ii in lines:
    i = ii.strip('\n')  #去掉换行
    i1 = ''.join(i.split(' ')) #去掉文字中间空格
    names.append(i1)  #列表添加
print(names)

num1 = 0
csvFile = open(r"F:\party\test.csv", 'w+')  #如果csv数据带有空格,读取容易出错,格式不统一
writer = csv.writer(csvFile)
writer.writerow(('职工姓名', '党费计算基数', '交纳比例', '交纳党费'))
subkeys = ['职工姓名', '党费计算基数', '交纳比例', '交纳党费']
for rows in reader:
    if rows['职工姓名'][0:3] in names:  #判断相应元素是否在名单中
        aa = dict([(key, rows[key]) for key in subkeys])  #挑选需要的列
        #print(aa.keys())
        #items = aa.items()
        #print(items)
        writer.writerow(aa[key] for key in subkeys)  #挑选对应名单的行,并且按照指定顺序输出
        num1 += 1
print(num1)
csvfile.close()          #什么时候不需要用文件了才关闭


'''

     print(list(rows.keys()))
     print(rows.keys())   #单纯显示字典标签
     print(rows.values()) #单纯显示值
'''

 

 

 

参考:http://www.jb51.net/article/55328.htm

字典的基本操作

1、如何访问字典中的值?
adict[key] 形式返回键key对应的值value,如果key不在字典中会引发一个KeyError。

2、如何检查key是否在字典中?

a、has_key()方法 形如:adict.haskey(‘name') 有–>True,无–>False
b、in 、not in   形如:'name' in adict      有–>True,无–>False

3、如何更新字典?

a、添加一个数据项(新元素)或键值对
adict[new_key] = value 形式添加一个项
b、更新一个数据项(元素)或键值对
adict[old_key] = new_value
c、删除一个数据项(元素)或键值对
del adict[key] 删除键key的项 / del adict 删除整个字典
adict.pop(key) 删除键key的项并返回key对应的 value值

 

映射类型操作符

标准类型操作符(+,-,*,<,>,<=,>=,==,!=,and,or, not)

a、字典不支持拼接和重复操作符(+,*)
b、字典的比较操作
先比较字典的长度也就是字典的元素个数
键比较
值比较

 

映射相关的函数

1、len() 返回字典的长度
2、hash() 返回对象的哈希值,可以用来判断一个对象能否用来作为字典的键
3、dict() 工厂函数,用来创建字典

 

字典的方法(adict表示字典名)

1、adict.keys() 返回一个包含字典所有KEY的列表;
2、adict.values() 返回一个包含字典所有value的列表;
3、adict.items() 返回一个包含所有(键,值)元祖的列表;
4、adict.clear() 删除字典中的所有项或元素;
5、adict.copy() 返回一个字典浅拷贝的副本;
6、adict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None);
7、adict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None);
8、adict.has_key(key) 如果key在字典中,返回True,否则返回False。 现在用 in 、 not in;
9、adict.iteritems()、adict.iterkeys()、adict.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
10、adict.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
11、adict.setdefault(key, default=None) 和set()方法相似,但如果字典中不存在Key键,由 adict[key] = default 为它赋值;
12、adict.update(bdict) 将字典bdict的键值对添加到字典adict中。

posted @ 2016-11-14 11:41  CC_python  阅读(72)  评论(0)    收藏  举报