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

问题描述 投票:-1回答:4

假设我们有一个dict和指定的函数,它将两个参数作为输入

foo = {'key1':'value1', 'key2':'value2'}

def bar(key, value):
    print key, value

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

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

python python-3.x python-2.7
4个回答
3
投票

使用for-loop而不是字典的.items方法:

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

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

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

两者都给出:

key2 value2
key1 value1

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


2
投票

是的,你可以对你的功能进行微小的修改

foo = {'key1':'value1', 'key2':'value2'}

def bar(pair):
    key, value = pair
    print key, value

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

map(bar, foo.items())

产生:

key2 value2
key1 value1

1
投票

引用PEP-20

简单比复杂更好。

阅读Zen of Python

保持简单,你可以做一些事情 -

def bar(key, value):
    print key, value

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

0
投票
foo = {'key1':'value1', 'key2':'value2'}

def bar(key, value):
    print key, value

[bar(key, value) for key,value in foo.items()]
© www.soinside.com 2019 - 2024. All rights reserved.