如何从字典中提取只打印某些变量python

时间:2017-01-25 15:29:37

标签: python

我有像这样的tsv文件

Name    School   Course         
Nicole  UVA      Biology
Jenna   GWU      CS
从那里开始, 我只想从该词典中打印名称和课程。我该怎么做呢?

下面的代码是我如何将原始TSV文件放入上面的字典中。

import csv
data = csv.reader(open('data.tsv'),delimiter='\t')
fields = data.next()
for row in data:
    item = dict(zip(fields, row))
    print item 

所以现在我有了这样的字典:

{'Name':'Nicole.', 'School':'UVA.','Course':'Biology'}
{'Name':'Jenna.', 'School':'GWU','Course':'CS'}
{'Name':'Shan', 'School':'Columbia','Course':'Astronomy'}
{'Name':'BILL', 'School':'UMD.','Course':'Algebra'}

我只想从该字典中打印名称和课程。我该怎么做呢?

我想添加代码,以便我只打印

{'Name':'Jenna.','Course':'CS'}
{'Name':'Shan','Course':'Astronomy'}
{'Name':'BILL','Course':'Algebra'}

请指导。谢谢

5 个答案:

答案 0 :(得分:0)

只需删除循环中的键

for row in data:
    item = dict(zip(fields, row))
    del item['School']
    print item 

答案 1 :(得分:0)

最简单的方法是在打印前删除item['School']条目

for row in data:
    item = dict(zip(fields, row))
    del item['School']
    print item 

但这只有在您确切知道字典的样子时才有效,它没有您不想要的其他条目,并且它已经有一个School条目。我建议您从旧字典中构建一个新字典,只保留NameCourse条目

for row in data:
    item = dict(zip(fields, row))
    item = {k, v for k, v in item.items() if k in ('Name', 'Course')}
    print item 

答案 2 :(得分:0)

首先可能使用DictReader,并且仅当密钥与预定义列表匹配时才重建row-dict:

import csv

keep = {"Name","Course"}
data = csv.DictReader(open('data.tsv'),delimiter='\t')

for row in data:
    row = {k:v for k,v in row.items() if k in keep}
    print(row)

结果:

{'Course': 'Biology', 'Name': 'Nicole'}
{'Course': 'CS', 'Name': 'Jenna'}

答案 3 :(得分:0)

基于这里的答案: filter items in a python dictionary where keys contain a specific string

print {k:v for k,v in item.iteritems() if "Name" in k or "Course" in k}

答案 4 :(得分:0)

最好使用专为这类任务设计的库(Pandas)。字典非常适​​合存储键值对,但看起来您有类似电子表格的表格数据,因此您应该选择更好地反映手头数据的存储类型。您可以简单地执行以下操作:

import pandas as pd

df = pd.read_csv('myFile.csv', sep = '\t')

print df[['Name','Course']]

您会发现,当您开始执行更复杂的任务时,最好使用编写良好的库而不是将某些东西拼凑在一起