相关疑难解决方法(0)

在**kwargs中使用OrderedDict

是否可以将OrderedDict实例传递给使用**kwargs语法并保留排序的函数?

我想做的是:

def I_crave_order(**kwargs):
    for k, v in kwargs.items():
        print k, v

example = OrderedDict([('first', 1), ('second', 2), ('third', -1)])

I_crave_order(**example)
>> first 1
>> second 2
>> third -1
Run Code Online (Sandbox Code Playgroud)

但实际结果是:

>> second 2
>> third -1
>> first 1
Run Code Online (Sandbox Code Playgroud)

即,典型的随机字典排序.

我有其他用途明确设置顺序是好的,所以我想保留**kwargs而不是仅仅将OrderedDict作为常规参数传递

python parameter-passing kwargs

29
推荐指数
2
解决办法
8132
查看次数

将*splat和**splatty-splat运算符更改为我的对象

你如何重写拆包语法的结果*obj**obj

例如,你能以某种方式创建一个thing行为如下的对象:

>>> [*thing]
['a', 'b', 'c']
>>> [x for x in thing]
['d', 'e', 'f']
>>> {**thing}
{'hello world': 'I am a potato!!'}
Run Code Online (Sandbox Code Playgroud)

注意:迭代通过__iter__("for x in thing")返回*splat unpack中的不同元素.

我一看operator.muloperator.pow,但这些功能只关心用途有两个操作数,如a*ba**b,而且似乎无关的图示操作.

python splat iterable-unpacking double-splat

12
推荐指数
1
解决办法
1842
查看次数