【发布时间】:2014-03-30 11:08:46
【问题描述】:
我想要类似以下结构的东西:y['1'][tuple(list)] = val
作为python中的嵌套字典,但当我尝试时,我得到KeyError:
csv 文件中的数据如下:
Rest_id, rates, items
1,4, burger
1,8, tofu_log
2,5, burger
2,8.5, tofu_log
3,4, chef_salad
3,8, steak_salad_sandwich
4,5, steak_salad_sandwich,salad
4,2.5, wine_spritzer
5,4, extreme_fajita3,test2,test4,test
5,8, fancy_european_water
6,5, fancy_european_water
6,6, extreme_fajita, jalapeno_poppers, extra_salsa
7,1.5, wine_spritzer
7,5, extreme_fajita, jalapeno_poppers
以下是代码:
y = defaultdict(dict)
with open('sample_data_tested_with.csv','r') as f:
reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
reader = [[x.strip() for x in row] for row in reader]
for i in reader:
#cd[i[0]] = {tuple(i[2:]):i[1]}
#cd[i[0]][tuple(i[2:])].update(i[1])
print i[0], i[1], tuple(i[2:])
y[i[0]][tuple(i[2:])].append(i[1])
稍后我想在字典中搜索y['rest_id']['item'] 并找到相应的费率。
提前致谢。
来自 ipython 的完整堆栈:
In [49]: with open('sample_data_tested_with.csv','r') as f:
reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
reader = [[x.strip() for x in row] for row in reader]
for i in reader:
#cd[i[0]] = {tuple(i[2:]):i[1]}
#cd[i[0]][tuple(i[2:])].update(i[1])
print i[0], i[1], tuple(i[2:])
#x[tuple(i[2:])]=float(i[1])
y[i[0]][tuple(i[2:])].append(i[1])
....:
1 4 ('burger',)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-49-ab608c2dc33a> in <module>()
7 print i[0], i[1], tuple(i[2:])
8 #x[tuple(i[2:])]=float(i[1])
----> 9 y[i[0]][tuple(i[2:])].append(i[1])
10
KeyError: ('burger',)
【问题讨论】:
-
我可以拥有 y = defaultdict(list) 并附加数据,但我无法根据以下键搜索数据:y['rest_id']['item']
标签: python dictionary nested key