如何迭代Python字典键

时间:2016-02-22 20:44:34

标签: python loops dictionary key

我有一本字典如下。如何使用匹配的第一个和第二个键迭代字典中的所有值?例如,在以下字典中迭代所有('图片',' angie',*)

book = 
{('poem', 'jim', '1'): '$50', 
 ('poem', 'jim', '2'): '$51', 
 ('picture', 'angie', '1'): '$90', 
 ('picture', 'angie', '2'): '$10', 
 ('picture', 'angie', '3'): '$20'}

将返回

 ('picture', 'angie', '1'): '$90'
 ('picture', 'angie', '2'): '$10' 
 ('picture', 'angie', '3'): '$20'

3 个答案:

答案 0 :(得分:3)

您可以使用dict comprehension执行此操作:

res = {key: book[key] for key in book if key[0]=='picture' and key[1]=='angie'}

print(res)
{('picture', 'angie', '1'): '$90',
 ('picture', 'angie', '2'): '$10',
 ('picture', 'angie', '3'): '$20'}

答案 1 :(得分:1)

你应该重组为:

book = {
 ('poem', 'jim'):[('2', '$51'), ('1', '$50')],
 ('picture', 'angie'):[('1','$90'),('2', '$10'),('3', '$20') ]}

然后进行查找会更简单,更有效:

In [1]: book = {
   ...:  ('poem', 'jim'):[('2', '$51'), ('1', '$50')],
   ...:  ('picture', 'angie'):[('1','$90'),('2', '$10'),('3', '$20') ]}

In [2]: book["picture","angie"]
Out[2]: [('1', '$90'), ('2', '$10'), ('3', '$20')]
In [3]: book["poem","jim"]
Out[3]: [('2', '$51'), ('1', '$50')]

你可以更进一步,使用subdicts创建更多的关系,主要的一点是外键应该让你获得共同的内容,我是一个作者与他们所有的书籍av值,然后如果你想更进一步你可以对书籍进行分类:

 {"author_name1":{"horror":[..], "thriller":[...]},
 "author_name2":{"horror":[..], "thriller":[...]}}

答案 2 :(得分:0)

for key,value in book.iteritems():
    if key[0] == 'picture' and key[1] == 'angie':
        print key, value