Python -如何使用dict()函数只有一个变量?



我有一个变量叫做"dict_str"它看起来像这样:"a = 15, a2 = 19"(它持续了数千个输入)。如果我尝试使用dict()函数:

dict(dict_str) 

它给了我这个错误:

ValueError:字典更新序列元素#0长度为1;

但是如果我这样做:

dict(a = 15, a2 = 19)

可以正常工作。所以我想知道是否有一种方法可以使它与dict_str变量

一起工作

这是一种变通

items = [item.split('=') for item in dict_str.split(', ')]
my_dict = {}
for key, value in items:
my_dict[key.strip()] = int(value.strip())
print(my_dict)

如果你喜欢字典理解,你可以使用下面的方法

items = [item.split('=') for item in dict_str.split(', ')]
my_dict = {key.strip(): int(value.strip()) for key, value in items}
print(my_dict)

{'a': 15, 'a2': 19}

你甚至可以根据你的用例使用正则表达式。

的例子:

import re
regex = re.compile(r'(w+) *= *(d+)') 
items = regex.findall(dict_str)
my_dict = {key: int(value) for key, value in items} 
print(my_dict) 

这个正则表达式应该产生相同的输出。

一行:

dmap = dict(map(str.strip, array.split("=")) for array in "a = 15, a2 = 19".split(","))

减压:

data = "a = 15, a2 = 19" 
dmap = dict(map(str.strip, array.split("=")) for array in data.split(","))
print(dmap)

更好的方法:

data = "a = 15, a2 = 19"
dmap = {}
for value in data.split(","):
array = value.split("=")
dmap[array[0].strip()] = int(array[1].strip())

相关内容

最新更新