HDF5 не использует пары ключ / значение, как словарь Python. Структуры данных больше похожи на NumPy массивы. Я не знаю, что вы в конечном итоге пытаетесь сделать. Существует гораздо более простой итератор для сценария B. Попробуйте это:
h5f = h5py.File(path_to_h5py,'r')
data = h5f[name_of_dataset]
for key_example in data:
print (key_example)
Простой тест добавлен в 2020-04-25 для проверки производительности ввода-вывода:
import h5py
import time
upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
lower = 'abcdefghijklmnopqrstuvwxyz'
nums = '0123456789'
with h5py.File('SO_61417130.h5','w') as h5w:
nrows = 16
nrpts = 100
#vstr_dt = h5py.string_dtype(encoding='utf-8') # for h5py 2.10.0
vstr_dt = h5py.special_dtype(vlen=str) # for h5py 2.9.0
vstr_ds = h5w.create_dataset('testvstrs', (nrpts*nrows,1), dtype=vstr_dt )
print (vstr_ds.dtype, ":", vstr_ds.shape)
rcnt = 0
for cnt1 in range(nrpts) :
for cnt2 in range(nrows) :
vstr_ds[rcnt]= ((cnt2+1)*(upper+lower+nums))
rcnt +=1
print (vstr_ds.dtype, ":", vstr_ds.shape)
print ('done writing')
start = time.clock()
for cnt in range(-nrows,0,1) :
find_str = vstr_ds[cnt]
print (len(find_str[0]))
print ('Elapsed time =', (time.clock() - start) )