从 python 字典中访问数据

Posted

技术标签:

【中文标题】从 python 字典中访问数据【英文标题】:Accessing data from python dictionary 【发布时间】:2018-09-21 12:04:18 【问题描述】:
import numpy as np

def unpickle(file):
   import pickle
   with open(file, 'rb') as fo:
   dict = pickle.load(fo, encoding='bytes')
   return dict

 train = []
for j in range (1,6):
train.append(unpickle('/Users/sachalabdullah/Desktop/cifar-10-batches-py/data_batch_'+str(j)))

test = unpickle ("/Users/sachalabdullah/Desktop/cifar-10-batches-py/test_batch”)

我已经加载了 CIFAR_10,因为我是 python 新手,我不知道如何从字典中访问数据。

还有一件事让我感到困惑,我在train 中附加了所有五批训练数据,假设我只能访问数据集中的标签和图像,所以如果我正在访问它,我将从全部五个批次,或者我需要为每个批次分别访问图像和标签?

是否有任何与此等效的 Matlab,如果我想从矩阵中获取第 1 列和第 2 列,我会做 A(:, [1,2]) ,或者没有?

【问题讨论】:

【参考方案1】:

要访问字典中的键:

mydict='mykey':['value1','value2']

#access mykey from mydict:
mydict['mykey']

要将数据正确加载到字典中,我会这样做:

def unpickle(file):
   import pickle
   dict=
   with open(file, 'rb') as fo:
   dict[fo] = pickle.load(fo, encoding='bytes')
   return dict

#how to access the data in your train[j] dict:
[v for v in train[j].values()]

获取矩阵前两行的python等价物:

A=np.matrix([[1, 2, 3], [3, 4, 5], [5, 6, 7]])
A[:,[0,1]]

请记住,python 的索引从 0 开始。 matlab 索引从 1 开始。

【讨论】:

【参考方案2】:

首先创建您的转储文件。

file = open('filename', 'r')
obj = file.read()
pickle.dump(obj, open('file.pickle', 'wb'))

然后

with open(file.pickle, 'rb') as fo:
   dict = pickle.load(fo, encoding='bytes')

【讨论】:

以上是关于从 python 字典中访问数据的主要内容,如果未能解决你的问题,请参考以下文章

如何通过创建字典从python中的以下映射访问城市名称

Python字典访问数据

python数据字典的操作

python之字典

Python字典dict的用法访问dict

python中字典的问题