当我有密钥列表时,是否有简单,可读和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方式?
答案 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))
但无法解压缩为%
格式。