我有一个奇怪的字符串(单行),其中第一个字段是键,第二个字段是值。看起来像这样:
key1\val1\key2\val2\key3\val3\...\keyn\valn
将这种表示法转换为python字典的最佳方法是什么?
答案 0 :(得分:2)
只需使用一个临时列表将您的字符串拆分为:
s = 'key1\\val1\\key2\\val2\\key3\\val3'
temp = s.split('\\')
d = {k: v for k, v in zip(temp[0::2], temp[1::2])}
答案 1 :(得分:1)
简单的答案。
引发的异常:“Esri.ArcGISRuntime.ArcGISRuntimeException”(位于 mscorlib.dll 中)
“Esri.ArcGISRuntime.ArcGISRuntimeException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理
Illegal state: Job failed because responses have failed for more than 10 minutes.
答案 2 :(得分:0)
这是我想出的:
import re
string = 'key1\\val1\\key2\\val2\\key3\\val3'
dictionary = {match.group(1): match.group(2) for match in re.finditer(r'(\w+)\\(\w+)', string)}
print dictionary
但是,请注意,如果键值是仅个字符(没有空格,下划线或类似内容),则此操作仅有效。为了适应这种不同的情况,您必须修改上面代码中使用的简单正则表达式。
答案 3 :(得分:0)
这样做无需任何导入:
s = """key1\\val1\\key2\\val2\\key3\\val3\\...\\keyn\\valn"""
spl = s.split("\\")
m = {}
for i in range(0, len(spl)-1, 2):
m[spl[i]] = spl[i+1]
print(m)
答案 4 :(得分:0)
使用split和itertools.islice
import itertools
def parse(ss):
inp = ss.split('\\')
keys, vals = itertools.tee(inp)
keys = itertools.islice(keys,0,None,2)
vals = itertools.islice(vals,1,None,2)
nd = {}
for key,val in zip(keys,vals):
nd[key] = val
return nd
答案 5 :(得分:0)
在Python 2.7.12中:
line = "key1\\val1\\key2\\val2\\key3\\val3"
line_data = line.split("\\")
line_dict = {}
print line_data
for i in range(0, len(line_data), 2):
key = line_data[i]
value = line_data[i+1]
line_dict[key] = value
print line_dict