将具有交替键值对的字符串转换为字典

时间:2018-09-23 11:00:27

标签: python

我有一个奇怪的字符串(单行),其中第一个字段是键,第二个字段是值。看起来像这样:

key1\val1\key2\val2\key3\val3\...\keyn\valn

将这种表示法转换为python字典的最佳方法是什么?

6 个答案:

答案 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