2

我想做的是有一个像

((category1: subcategory1, sub2, sub3), (cat2: sub12, sub22...))

但是,我也希望子类别也有自己的值:

((subcat1: subitem1, subitem2), (subcat2: subitem12, subitem22)...)

我希望能够引用子项,使其连接到原始类别,而不仅仅是子类别。有没有办法做到这一点?

编辑:

import json
import win32com.client as win32
from glob import glob
import io
import locale
from collections import defaultdict
import pprint
#import re
#importing needed clients

raw_files = glob('*.xlsx')
x = locale.getpreferredencoding()
print x
ex = win32.gencache.EnsureDispatch('Excel.Application')
ex.Visible = False
oFile = open("rawsort.txt", "w+")
#oFile = io.open("rawsort.txt", "w+", encoding = "utf-8")#text dump

for f in raw_files:
ex.Workbooks.Open(f)
sheet = ex.ActiveWorkbook


#print sheet.Sheets("MRD").Cells(1,2).Value
wincs = sheet.Worksheets('MRD')
if sheet.Sheets("MRD").Cells(1, 3).Value== None:
    wincs.Cells(1,3).Value = u'N/A'
if sheet.Sheets("MRD").Cells(1, 4).Value== None:
    wincs.Cells(1,4).Value = u'N/A'
if sheet.Sheets("MRD").Cells(1, 5).Value== None:
    wincs.Cells(1,5).Value = u'N/A'
if not wincs.Cells(1,2).Value == None:
            category[sheet.Sheets('MRD').Cells(1,2).Value][wincs.Cells(1,3).Value][wincs.Cells(1,4).Value] = wincs.Cells(1,5).Value
   # print listy
print sheet.Sheets('MRD').UsedRange.Rows.Count
for x in xrange(2, sheet.Sheets("MRD").UsedRange.Rows.Count+1):#for loop to print     through paragraphs
        if sheet.Sheets("MRD").Cells(x, 3).Value== None:
            wincs.Cells(x,3).Value = u'N/A'
        if sheet.Sheets("MRD").Cells(x, 4).Value== None:
            wincs.Cells(x,4).Value = u'N/A'
        if sheet.Sheets("MRD").Cells(x, 5).Value== None:
                wincs.Cells(x,5).Value = u'N/A'
        if not sheet.Sheets("MRD").Cells(x, 2).Value== None:       
                category[sheet.Sheets('MRD').Cells(x,2).Value][wincs.Cells(x,3).Value][wincs.Cells(x,4).Value] = wincs.Cells(x,5).Value
#oFile.write(unicode(listy))
oFile.write("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n")

oFile.close()

但是,这是我的输出:

问题

有什么帮助吗?

4

4 回答 4

1

You could store it like this:

categories = {
    'category1': {
         'subcat1': ['subitem1', 'subitem2'],
         'subcat2': ['subitem12', 'subitem22']
    },
    'category2': {
        # ...
    }
}
于 2013-06-21T16:53:12.540 回答
1

您可能需要一个树形数据结构。看看这个 github gist,了解如何在 python 中使用字典实现一个示例。

于 2013-06-21T16:36:44.370 回答
1

实际上,可以将值用作另一个字典中的键。我们一直在我工作的测试框架中这样做。在我们的例子中,我们有一个字典,其中包含具有预期键的所有条目,而其他字典中的每个字典都有一个名为 ID 的值,其值是第一个字典中的键。你这样做的方式如下:

value = dict1[dict2["key"]]

其中“key”当然是 dict2 中包含 dict1 中的键的值的名称。

当然,您可能希望通过分配dict2["key"]一个中间变量(让我们key在我们的示例中调用它)来确保安全,然后检查它是否真的是第一个字典中的键,如下所示:

key = dict2["key"]
if dict1.has_key(key):
    value = dict1[key]
else:
    value = None
于 2013-06-21T16:55:23.407 回答
0

是的,但是字典只能将一个键和一个值关联在一起,除非您希望该值是元组或列表

您可以将字典视为查找

>>>ages = {'Jenny':26, 'Mike':30}
>>>ages['Mike']
30

这是一个例子

Dict2[Dict1['category1']]
于 2013-06-21T16:33:52.480 回答