解构绑定字典内容

2024-04-20 06:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试“解构”字典,并将值与键后的变量名相关联。有点像

params = {'a':1,'b':2}
a,b = params.values()

但由于字典没有排序,因此不能保证params.values()将按(a, b)的顺序返回值。有什么好办法吗?


Tags: 字典排序顺序paramsvalues返回值办法解构
3条回答

与Jochen的建议相比,一种减少重复的方法是使用helper函数。这使您可以灵活地以任何顺序列出变量名,并且只对dict中的一个子集进行解构:

pluck = lambda dict, *args: (dict[arg] for arg in args)

things = {'blah': 'bleh', 'foo': 'bar'}
foo, blah = pluck(things, 'foo', 'blah')

另外,您可以对键进行排序并获取值,而不是joaquin的OrderedDict。唯一的捕获是需要按字母顺序指定变量名,并对dict中的所有内容进行解构:

sorted_vals = lambda dict: (t[1] for t in sorted(dict.items()))

things = {'foo': 'bar', 'blah': 'bleh'}
blah, foo = sorted_vals(things)
from operator import itemgetter

params = {'a': 1, 'b': 2}

a, b = itemgetter('a', 'b')(params)

与其使用复杂的lambda函数或字典理解,不如使用内置库。

如果您害怕使用locals字典所涉及的问题,并且希望遵循原始策略,那么来自python 2.7和3.1的有序字典collections.OrderedDicts允许您按照字典项首次插入的顺序恢复它们

相关问题 更多 >