我想要做的是有一个像这样的字典
((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()然而,这是我的输出:

有什么帮助吗?
发布于 2013-06-22 00:36:44
您可能需要一个树数据结构。让我们看一看this github gist,了解如何用Python语言中的字典实现它。
发布于 2013-06-22 00:53:13
你可以这样存储它:
categories = {
'category1': {
'subcat1': ['subitem1', 'subitem2'],
'subcat2': ['subitem12', 'subitem22']
},
'category2': {
# ...
}
}发布于 2013-06-22 00:55:23
实际上,可以在另一个字典中使用一个值作为键。在我工作的测试框架中,我们一直在这样做。在我们的示例中,我们有一个字典,其中包含具有预期关键字的所有条目,而其他每个字典都有一个名为ID的值,它的值是第一个字典中的关键字。具体操作方法如下:
value = dict1[dict2["key"]]其中" key“当然是包含dict1中的key的dict2中的值的名称。
当然,您可能希望安全起见,将dict2["key"]赋给一个中间变量(在我们的示例中称为key ),然后检查它是否真的是第一个字典中的键,如下所示:
key = dict2["key"]
if dict1.has_key(key):
value = dict1[key]
else:
value = Nonehttps://stackoverflow.com/questions/17240076
复制相似问题