我可以使用一个值作为另一个词典的关键吗?

时间:2013-06-21 16:28:30

标签: python dictionary key

我要做的是有一个类似

的字典
((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()

然而,这是我的输出:

problems

任何帮助?

4 个答案:

答案 0 :(得分:1)

您可能需要树数据结构。看一下this github gist,了解如何在python中实现一个带字典的例子。

答案 1 :(得分:1)

你可以这样存储:

categories = {
    'category1': {
         'subcat1': ['subitem1', 'subitem2'],
         'subcat2': ['subitem12', 'subitem22']
    },
    'category2': {
        # ...
    }
}

答案 2 :(得分: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

答案 3 :(得分:0)

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

您可以将字典视为查找

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

这是一个例子

Dict2[Dict1['category1']]