嵌套dict python键

2024-05-23 19:24:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要如下结构:y['1'][tuple(list)] = val 作为python中的嵌套dict,但是当我尝试时,我得到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

代码如下:

^{pr2}$

{cd3>我想在后面的搜索中找到这个。 提前谢谢。在

来自ipython的完整堆栈:

^{3}$

Tags: logburgerfancyeuropeanwaterwineextremesandwich
2条回答

这是我得到的解决方案,请检查,如果有人发现任何问题,请告诉我,非常感谢。在

def create_NestedDict(filename):
    NestedDict = defaultdict(dict)
    with open(filename,'rb') as f:
        reader = csv.reader(f, delimiter=',')
        for row in reader:
            #print "row :", row
            record = row
            if record[0] not in NestedDict:
                NestedDict[record[0]] = {}
            items = tuple([ i.strip() for i in record[2:]])
            [record[0]][items] = record[1]
    return NestedDict

看来您可以使用itertools.groupby

>>>import itertools
>>>newreader,keys=[],[]
>>>for k,g in itertools.groupby(reader,key=lambda x:x[0]):
      newreader.append(tuple(g[1:]))
      keys.append(k)

这应该将数据分组到元组中。 现在我们迭代newreader,将每个元组转换成dict

^{pr2}$

相关问题 更多 >