从kwargs键

时间:2018-04-04 03:08:35

标签: python list kwargs

如何从kwargs获取值列表(参见下面的示例),我能够获取键但不能获取值

Kwargs:

  

{'description_9':你'HVAC Ductwork Upgrade','state_9':u'NSW',   'hours_6':u'2','hours_5':u'1','hours_4':u'1','hours_3':u'1',   'hours_2':u'8','hours_1':u'5','state_1':u'NSW','state_3':   u'NSW','state_2':u'NSW','state_5':u'NSW','state_4':u'NSW',   'state_7':u'NSW','state_6':u'NSW','nbn_2':你'不','nbn_3':你'   是','nbn_1':你'不','nbn_6':你'是','nbn_7':你'是',   'nbn_4':你'不','nbn_5':你'是','nbn_8':你'是','nbn_9':你'   是','site_8':你为什么','site_9':你''s'','hours_9':u'4',   'site_2':u'Paddington','site_3':u'Lidcombe','site_1':   u'Paddington','site_6':你是Marys','site_7':u'Various',   'site_4':u'Parramatta','site_5':u'Kingsgrove','spwo_8':你'   SP30073989-2','spwo_9':你'SP30074031-1','spwo_4':你'SP30071948-1   ','spwo_5':你'SP30073129-1','spwo_6':你'SP30073989-1','spwo_7':   你'SP30073989-3','spwo_1':你'SP30063647-1','spwo_2':你'   SP30066349-1','spwo_3':你'SP30071798-1','hours_8':u'2',   'hours_7':u'3','description_2':你'Lvl 5 CHW PCU升级',   'description_3':你'管道升级','description_1':你'冷冻   Water Riser Upgrade','description_6':你'HVAC Dropper Upgrade',   'description_7':你'HVAC Dropper Upgrade','project_manager':   u'Ossama Rihani','state_8':u'NSW','description_8':你'暖通空调滴管   升级','description_5':你'暖通空调和SGP升级',   'description_4':u'主配电板LCR自动转移   开关设计&施工P2'}

使用过滤器提取密钥的代码:

state_keys = [key for key in kwargs if key.startswith("state_")]

代码我试图获取关键值 - 未完成:

state_values = [value for key, value in kwargs if key.startswith("state_")]

2 个答案:

答案 0 :(得分:2)

Kwargs是一个词典,所以只需使用items()来迭代它。

state_values = [value for key, value in kwargs.items() if key.startswith("state_")]

答案 1 :(得分:0)

我不认为对dict.items()的简单引用应该算作一个完整的答案但是因为你坚持:

state_values = [value for key, value in kwargs.items() if key.startswith("state_")]

问题是由于kwargsdict,如果您要将参数扩展到keyvalue,则必须使用{{1} }}。这将返回一个键值元组列表,然后可以很容易地将其扩展为kwargs.items()key

请注意,在Python 2.x dict.items()中创建了一个键值元组的完整列表,而不是仅仅为您提供迭代器。为避免不必要的资源使用,请改用dict.iteritems()