在Python中访问字典中的列表

时间:2017-07-05 03:08:27

标签: python xml dictionary

我创建了一个词典

store = {'assetType': "['props','char','env','sets']", 'Height': '871', 'Project': 'AnimationProject1', 'Width': '2048', 'FPS': '24', 'Type': 'Animation', 'Unit': 'cm'}

这是在xml文件中,因此我使用xml.etree.ElementTree来解析文件,findfindalliter来访问xml文件,上面的行是我到底得到了什么。我使用for循环来访问xml文件

import xml.etree.ElementTree as xml

read = xml.parse(xmlFile)
#xmlFile is the xmlFile directory

findBase = read.findall('base')
#'base' and 'type' are the xml.SubElement used in the xml file.

for child in findBase:
    findType = child.iter('type')
    store = child.attrib
    for types in findType:
        store[types.attrib.keys()[0]] = types.attrib.values()[0]
    print store
    print store.items()[0][1][3]

但是,现在我想从上面的字典中'props'访问'assetType'。我尝试使用store.items()[0][1]并且我能够获得"['props','char','env','sets']"但是当我store.items()[0][1][3]时,而不是获得sets这个词,我得到了r。我理解它背后的原因,这是因为它将整行记录为字符串而不是字符列表。我也试过像store.get("assetType")这样的问题。

我的问题是,如何从上面的字典中提取单词propscharenvsets而不是单个字母?

由于

2 个答案:

答案 0 :(得分:0)

assetType值是您提到的需要解析为列表的字符串。如评论中所述,有几种方法可以做到这一点。这是一个简单的JSON方式,不幸的是,它非常适合您的情况。单引号不是有效的JSON,因此它们必须换成双打。

>>> import json
>>> store = {'assetType': "['props','char','env','sets']", 
 'Height': '871', 'Project': 'AnimationProject1', 
 'Width': '2048', 'FPS': '24', 'Type': 'Animation', 
 'Unit': 'cm'}
>>> json.loads(store['assetType'].replace("'",'"'))[3]
u'sets'

答案 1 :(得分:0)

如果您可以信任输入,可以对列表的字符串表示执行eval,将其转换为正确的Python列表

store = {'assetType': "['props','char','env','sets']", 'Height': '871', 'Project': 'AnimationProject1', 'Width': '2048', 'FPS': '24', 'Type': 'Animation', 'Unit': 'cm'}
asset_types = eval(store['assetType'])
# Then access the entries in the list
print asset_types[0]  # etc.