拥有密钥列表,从dict获取值的列表/元组

时间:2014-04-18 15:06:49

标签: python dictionary key

当我有密钥列表时,是否有简单,可读和Pythonic方法从dict中提取特定值?

我经常发现自己这样做:

uri = "http://%s:%s" % (self.options['listener_port'], self.options['listener_host'])

这是丑陋和漫长的。我总是觉得写下这样的东西:

uri = "http://%s:%s" % self.options['listener_port', 'listener_host']

应该是可能的,但它无效(至少在Python 2.7中没有)。

"官员" Pythonic方式?

1 个答案:

答案 0 :(得分:2)

如果您使用str.format代替(更老式)%格式,则可以执行以下操作:

"http://{0[listener_port]}:{0[listener_host]}".format(self.options)

在更一般的情况下,您可以从dict列表中的keys获取多个值,如:

values = [d[key] for key in keys]

并使用*解压缩,例如

"http://{0}:{1}".format(*(d[key] for key in keys))

无法解压缩为%格式。