【问题标题】:Python - how to use the dict() function with only a variable?如何使用只有一个变量的 dict()?
【发布时间】:2022-12-31 21:55:06
【问题描述】:

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

 dict(dict_str) 

它给了我这个错误:

ValueError:字典更新序列元素#0 的长度为 1; 2 是必需的

但如果我这样做:

 dict(a = 15, a2 = 19),

它工作正常。 所以我想知道是否有办法让它与 dict_str 变量一起使用

【问题讨论】:

  • 您需要将字符串转换为 dict 可以使用的内容。从“分裂”开始。

标签: python


【解决方案1】:

这是一个解决方法。

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}

如果愿意,您甚至可以使用正则表达式。

例子:

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) 

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

【讨论】:

    【解决方案2】:

    一个班轮:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 2012-04-19
      • 2022-06-11
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多