我必须使用此代码:
local_arg = "1 : ASD|2|3|4|5, 2 : BSD|4|3|2|1, "
result_arg = {}
result_arg = {"inf" : {local_arg}}
语法错误(语法无效):result_arg = {"infos" : {local_arg}}
怎么了?
我想用它来做这件事:
result_arg["inf"][number]
我尝试过使用:
result_arg = {}
result_arg = {"inf" : {1 : ASD|2|3|4|5, 2 : BSD|4|3|2|1,}}
这样可行,但我的地图将自动创建,因此使用它不是解决方案。
答案 0 :(得分:0)
首先需要将local_arg与,
分开,然后将len>1
与:
分开(为避免" "
):
>>> local_arg.split(',')
['1 : ASD|2|3|4|5', ' 2 : BSD|4|3|2|1', ' ']
所以你可以这样做:
>>> s=[j.split(':') for j in local_arg.split(',') if len(j)>1]
>>> s
[['1 ', ' ASD|2|3|4|5'], [' 2 ', ' BSD|4|3|2|1']]
>>> {'inf':{i:j for i,j in s }}
{'inf': {'1 ': ' ASD|2|3|4|5', ' 2 ': ' BSD|4|3|2|1'}}
答案 1 :(得分:0)
在最后的代码中,dictionay result_arg
将如下所示,
{'inf': {'1 : ASD|2|3|4|5, 2 : BSD|4|3|2|1, '}}
此处result_arg['inf']
是set
。不是具有键值对的字典。所以你得到错误。您的代码中可能还有其他一些问题,它应该TypeError
而不是SyntaxError
。
从字符串中,您可以这样处理,
local_arg = "1 : ASD|2|3|4|5, 2 : BSD|4|3|2|1, "
d = [itm.split(':') for itm in local_arg.strip().split(',') if itm]
c = dict((int(itm[0]), itm[1]) for itm in d)
result_arg = {}
result_arg = {"inf" : c}
现在你可以打印了,
print result_arg["inf"][1]
会给你这样的输出,
ASD|2|3|4|5