2024-04-20 06:24:44 发布
网友
我正在尝试“解构”字典,并将值与键后的变量名相关联。有点像
params = {'a':1,'b':2} a,b = params.values()
但由于字典没有排序,因此不能保证params.values()将按(a, b)的顺序返回值。有什么好办法吗?
params.values()
(a, b)
与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允许您按照字典项首次插入的顺序恢复它们
与Jochen的建议相比,一种减少重复的方法是使用helper函数。这使您可以灵活地以任何顺序列出变量名,并且只对dict中的一个子集进行解构:
另外,您可以对键进行排序并获取值,而不是joaquin的OrderedDict。唯一的捕获是需要按字母顺序指定变量名,并对dict中的所有内容进行解构:
与其使用复杂的lambda函数或字典理解,不如使用内置库。
如果您害怕使用locals字典所涉及的问题,并且希望遵循原始策略,那么来自python 2.7和3.1的有序字典collections.OrderedDicts允许您按照字典项首次插入的顺序恢复它们
相关问题 更多 >
编程相关推荐