在dict上获取get()方法以获得子值

时间:2012-02-11 20:03:49

标签: python

我有一个词典,我想说“如果有类别,则获取类别图标。如果没有,请返回''”。

我这样做是为了将字符添加到字符串中:

'Icon: %s' % venue.get('category', '').get('icon', 'No Icon')

显然,如果没有类别,get()会抛出错误。以下是其他一些错误的方法:

venue.get('category[icon]', '')

venue.get('category', '')['icon']

希望这说明了我正在努力做的事情。如果没有if / else语句,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以将默认值设为空字典:

'Icon: %s' % venue.get('category', {}).get('icon', 'No Icon')

但是,每次运行时都会产生空字典创建的开销。如果性能对您很重要,请尝试:

'Icon: %s' % (venue['category'].get('icon', 'No Icon') if 'category' in venue else 'No Icon')

还有很多其他方法可以解决这个问题,甚至可能比上面的方法更有效(如果找到'category',上面会进行两次查找)。