调用字典中常键,值的函数



假设我们有一个字典和指定的函数,它接受两个参数作为输入

foo = {'key1':'value1', 'key2':'value2'}
def bar(key, value):
print key, value

是否可以为一行中的每个键值对调用此函数?

我知道我可以在列表/字典理解中做到这一点,但我认为这个解决方案不是 pythonic,因为我不会在bar函数中返回任何内容。有没有推荐的和pythonic的方法可以做到这一点?

在字典的.items方法上使用for-loop

for item in foo.items():
bar(*item)

*语法解压缩元组(例如('key1', 'value1')( 到函数的参数中。请注意,您也可以在 for 循环中进行解包:

for k, v in foo.items():
bar(k, v)

两者都提供:

key2 value2
key1 value1

您可能会注意到,它们的顺序与您定义它们的顺序不同。这只是字典的一个隐含特征——它们没有(可靠的(顺序。我说"可靠"的原因是因为它是确定性的(基于每个对象的哈希值,但依赖它是不明智的。

是的,你可以对你的函数进行微小的修改

foo = {'key1':'value1', 'key2':'value2'}
def bar(pair):
key, value = pair
print key, value

有了这个功能,你可以使用map.

map(bar, foo.items())

产生:

key2 value2
key1 value1

引用PEP-20

简单总比复杂好。

阅读 Python 的禅意

为了简单起见,你可以做一些事情——

def bar(key, value):
print key, value
for k, v in foo.items():
bar(k, v)
foo = {'key1':'value1', 'key2':'value2'}
def bar(key, value):
print key, value
[bar(key, value) for key,value in foo.items()]

最新更新