簡體   English   中英

如何從字典中提取以僅打印某些變量python

[英]How to extract from dictionaries to only print certain variables 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'}

請指導。 謝謝你

只需刪除循環中的密鑰

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

最簡單的方法是在打印之前刪除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 

也許首先使用DictReader ,並且僅在鍵與預定義列表匹配時才重新DictReader行字典:

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'}

根據這里的答案: 過濾python字典中的項,其中鍵包含特定的字符串

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

最好使用專為此類任務(熊貓)設計的庫。 字典非常適​​合存儲鍵值對,但是看起來您具有類似電子表格的表格數據,因此您應該選擇一種存儲類型,以更好地反映手頭的數據。 您可以簡單地執行以下操作:

import pandas as pd

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

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

您會發現,當您開始執行更復雜的任務時,最好使用編寫良好的庫而不是將某些東西組合在一起

用下面的行替換你的“print(item)”行。

print(dict(filter(lambda e: e[0]!='School', item)))

輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM