加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 从列表中删除字典

发布时间:2020-12-20 12:41:20 所属栏目:Python 来源:网络整理
导读:我有一个CSV文件,我读作每行的字典列表.我想删除列表中具有EmailAddress”的所有条目.我试过了: #!/usr/bin/pythonimport csvdef import_users(location_of_file): with open(location_of_file,'r',newline='',encoding='utf-8-sig') as openfile: reader =
我有一个CSV文件,我读作每行的字典列表.我想删除列表中具有EmailAddress”的所有条目.我试过了:

#!/usr/bin/python
import csv


def import_users(location_of_file):
    with open(location_of_file,'r',newline='',encoding='utf-8-sig') as openfile:
       reader = csv.DictReader(openfile)
       for row in reader:
            yield row

def save_csv(data,location):
   with open(location,'w',encoding='utf-8-sig') as file:
       fieldnames = ['EmailAddress','GivenName','Surname','Company','Department']
       writer = csv.DictWriter(file,fieldnames=fieldnames)
       writer.writeheader()
       for item in data:
           writer.writerow(item)



if __name__ == '__main__':
    users = list(import_users('C:TempExample.csv'))
    for user in users:
        if user['EmailAddress'] == '':
            del user
        else:
            pass
    save_csv(users,'C:TempOutput.csv')

但我的结果仍然是没有电子邮件地址的条目.我究竟做错了什么?

解决方法

不要在刺激他们的同时更改列表项目.

代替

for user in users:
    if user['EmailAddress'] == '':
        del user
     else:
        pass

users = filter(lambda user: user['EmailAddress'] != '',users)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读