python 如何使用只有一个变量的dict()?

nvbavucw  于 2023-01-01  发布在  Python
关注(0)|答案(2)|浏览(156)

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

dict(dict_str)

它给出了这个错误:
ValueError:字典更新序列元素#0长度为1; 2为必填项
但如果我这么做:

dict(a = 15, a2 = 19)

它工作得很好。所以我想知道是否有一种方法可以让它与dict_str变量一起工作

vfwfrxfs

vfwfrxfs1#

这是一个变通方案。

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)

输出:

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

如果愿意,您甚至可以使用regex
示例:

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)

此正则表达式应生成相同的输出。

xv8emn3q

xv8emn3q2#

一个内衬:

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())

相关问题