通过索引访问Python字典的元素

2024-04-25 06:41:34 发布

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

考虑一下

mydict = {
  'Apple': {'American':'16', 'Mexican':10, 'Chinese':5},
  'Grapes':{'Arabian':'25','Indian':'20'} }

例如,如何访问此词典的特定元素? 例如,我想在格式化Apple的第一个元素之后打印第一个元素,在我们的例子中,第一个元素只是“美国的”?

附加信息 上面的数据结构是通过解析python函数中的输入文件创建的。但一旦创建,运行时它将保持不变。

我在函数中使用这个数据结构。

因此,如果文件发生更改,则下次运行此应用程序时,文件的内容将不同,因此此数据结构的内容将不同,但格式将相同。 所以你看我在我的函数里,我不知道苹果的第一个元素是‘美国’或者其他什么,所以我不能直接用‘美国’作为键。


Tags: 文件函数元素数据结构内容applemydict词典
3条回答

我注意到你的描述,你只知道你的解析器会给你一个字典,它的值就是字典,就像这样:

sampleDict = {
              "key1": {"key10": "value10", "key11": "value11"},
              "key2": {"key20": "value20", "key21": "value21"}
              }

所以你必须反复检查你的父字典。如果要打印或访问sampleDict.values()列表中的所有第一个字典键,可以使用以下方法:

for key, value in sampleDict.items():
    print value.keys()[0]

如果您只想访问sampleDict.values()中第一个项的第一个键,这可能很有用:

print sampleDict.values()[0].keys()[0]

如果你用你在这个问题上举的例子,我的意思是:

sampleDict = {
              'Apple': {'American':'16', 'Mexican':10, 'Chinese':5},
              'Grapes':{'Arabian':'25','Indian':'20'}
              }

第一个代码的输出是:

American
Indian

第二个代码的输出是:

American

既然这是一本字典,你就可以用钥匙来查。要将字典存储在“Apple”下,请执行以下操作:

>>> mydict["Apple"]
{'American': '16', 'Mexican': 10, 'Chinese': 5}

要知道他们中有多少是美国人(16岁),就这样做:

>>> mydict["Apple"]["American"]
'16'

如果问题是,如果我知道我有一个包含“苹果”作为水果和“美国”作为苹果类型的口述,我会使用:

myDict = {'Apple': {'American':'16', 'Mexican':10, 'Chinese':5},
          'Grapes':{'Arabian':'25','Indian':'20'} }


print myDict['Apple']['American']

正如其他人所建议的那样。如果问题是,当你将任意文件读入dict of dict数据结构时,你不知道“Apple”是水果还是“American”是“Apple”的一种,你可以这样做:

print [ftype['American'] for f,ftype in myDict.iteritems() if f == 'Apple' and 'American' in ftype]

或者更好的方法是,如果你知道只有苹果才有American类型,那么你就不必重复整个dict:

if 'Apple' in myDict:
    if 'American' in myDict['Apple']:
        print myDict['Apple']['American']

在所有这些情况下,词典实际存储条目的顺序并不重要。如果您真的很关心订单,那么可以考虑使用OrderedDict

http://docs.python.org/dev/library/collections.html#collections.OrderedDict

相关问题 更多 >