我想複製python中的MATLAB中找到的一些功能,並且正在尋找pythonic方法來解決此問題。在列表中訪問字典值
考慮下面的例子。
import io
import csv
data = """name,age,height
scott,31,175
bob,45,180
george,2,100
"""
f = io.StringIO(data)
reader = csv.reader(f, delimiter=',')
fields = next(reader)
table = []
for row in reader:
item = dict(zip(fields, row))
table.append(item)
有些數據是進口的,每行是列表中的一個項目,每列配對與它的字段名稱的字典。
訪問一個特定元素的單場簡單
>>> table[1]['name']
'bob'
我怎麼能一邊返回該表中的「名稱」字段的所有值從使用一個for循環或列表理解?
ages = [x['age'] for x in table]
在MATLAB我可以做到以下幾點
ages = [table(:).age]
這將返回一個包含每個人的年齡的數組。
有沒有辦法從項目列表中返回單個字段的所有元素?或者列表理解是最好的方法?
[編輯]:如果我只想訪問前兩個元素並獲得其字段,那麼該怎麼辦?或者最後2個元素? 列表理解仍然是最好的方法嗎?
也許有更好的數據結構來允許這樣做?
什麼是錯的列表理解? –
如果我只想選擇'僅最後3個項目',該怎麼辦? – scotty3785
你可能應該使用一個熊貓'DataFrame'來做到這一點。它相當於一個MATLAB表(實際上,MATLAB表基於熊貓數據框或來自R的類似數據結構)。 – TheBlackCat