Python在字典中打印值的值

Python在字典中打印值的值,python,python-3.x,dictionary,key-value,Python,Python 3.x,Dictionary,Key Value,在Python中,我知道可以通过执行variable.values()在字典中打印键的值。但是如果我想打印一个特定值的值呢 例如: pets = {'Dog': ['Poodle', 'Boxer', 'Terrier'], 'Cat': ['Sphynx', 'Ragdoll', 'Birman']} 我想特别选择一种特殊的动物。例如,我只想打印Boxer 你可以这样做: animal = list(pets.values())[0] breed = list(animal.values()

在Python中,我知道可以通过执行
variable.values()
在字典中打印键的值。但是如果我想打印一个特定值的值呢

例如:

pets = {'Dog': ['Poodle', 'Boxer', 'Terrier'], 'Cat': ['Sphynx', 'Ragdoll', 'Birman']}
我想特别选择一种特殊的动物。例如,我只想打印
Boxer

你可以这样做:

animal = list(pets.values())[0]
breed = list(animal.values())[1]
print(breed)
这将为您提供
Boxer
。然而,我很好奇我是否可以在一行代码中完成这项工作,比如打印一个值中的一个值

我试过:

breed = list(list(pets.values()))[0][1]

但是它告诉我字符串索引超出了范围。

您使用dict的方式似乎有些奇怪,我想您应该使用list

pets = {'Animal': {'Dog': ['Poodle', 'Boxer', 'Terrier'], 'Cat': ['Sphynx', 'Ragdoll', 'Birman']}}
如果你想打印一个特定的品种,那么你可能需要一个额外的密钥来获得使用dict的好处

pets = {'Animal': {'Dog': {1:'Poodle', 2:'Boxer', 3:'Terrier'}, 'Cat': ['Sphynx', 'Ragdoll', 'Birman']}}
那你就可以和波克瑟一起

pets['Animal']['Dog'][2]

定义此词典的方式会产生语法错误:

>>> pets = {'Animal': 'Dog':{'Poodle','Boxer','Terrier'}, 'Cat':{'Sphynx','Ragdoll','Birman'}}
  File "<stdin>", line 1
    pets = {'Animal': 'Dog':{'Poodle','Boxer','Terrier'}, 'Cat':{'Sphynx','Ragdoll','Birman'}}
                           ^
SyntaxError: invalid syntax

输出:

[['Poodle', 'Boxer', 'Terrier'], ['Sphynx', 'Ragdoll', 'Birman']]
  • 正如你所看到的,这是一个列表。现在,每个项目都是可以通过索引访问的列表
  • 这会给你想要的结果

您的数据结构是一个以“集合”作为值的dict。 集合是不可下标的,在列表中转换不会保持顺序

>>> list(pets['Dog'])
['Boxer', 'Poodle', 'Terrier']
问题是。。。。你真正需要什么


如果您需要访问繁殖,您可以/应该使用列表或元组而不是集合

给定的dictional
pets
,这是无效的语法,请首先修复该问题。您确实不应该使用字典的
.values()
。。。你失去了所有的效率。使用按键例如:
pets['Dog']
@Poojan哇,谢谢你捕捉到:)你改变了给定dict的结构。让OP先验证输入。捕捉得好,@Poojan。我在发帖后马上意识到了这一点,并将予以纠正。你完全改变了OP提供的dict的结构。哦,对了。我忘了字典并不总是按顺序列出东西,所以你不能索引东西。
[['Poodle', 'Boxer', 'Terrier'], ['Sphynx', 'Ragdoll', 'Birman']]
breed = list(pets.values())[0][1]
>>> list(pets['Dog'])
['Boxer', 'Poodle', 'Terrier']