1

假设我们有一个字符串

s = "a=b&c=d&xyz=abc"

我要字典

{"a": "b", "c": "d", "xyz": "abc"}

这是实现这一目标的一种方法:

dict([item.split("=") for item in s.split("&")])

这个使用生成器好一点

dict(item.split("=") for item in s.split("&"))

有没有更优雅的方式?我尝试这样做以利用新的海象运算符,但它看起来并没有更好:

{(pair := item.split("="))[0]: pair[1] for item in s.split("&")}

编辑:我正在寻找单程的东西,而不是创建临时列表,甚至每个项目都没有创建一个或多个临时元组。只是dict直接构建......会有这些方面的东西吗?

4

2 回答 2

1

从你的例子中,

d = {u.split('=')[0]:u.split('=')[1] for u in s.split('&')}.

于 2021-08-18T12:05:16.650 回答
1

尝试这个:

s = "a=b&c=d&xyz=abc"

lst = [z for y in s.split("&") for z in y.split("=")]
    
dct = {lst[i]: lst[i+1] for i in range(0, len(lst), 2)}

dct

输出:

{'a': 'b', 'c': 'd', 'xyz': 'abc'}
于 2021-08-18T12:23:01.157 回答