我有一本字典如下。如何使用匹配的第一个和第二个键迭代字典中的所有值?例如,在以下字典中迭代所有('图片',' 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'
答案 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