如何从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_")]
答案 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_")]
问题是由于kwargs
是dict
,如果您要将参数扩展到key
和value
,则必须使用{{1} }}。这将返回一个键值元组列表,然后可以很容易地将其扩展为kwargs.items()
和key
。
请注意,在Python 2.x dict.items()
中创建了一个键值元组的完整列表,而不是仅仅为您提供迭代器。为避免不必要的资源使用,请改用dict.iteritems()
。