python : List of string in key value pairs to map

标签 python python-3.x

我有一个如下所示的字符串

print(schema)
a:int,b:string,c:int,d:decimal(18,2)

我还有另一个列表,如下所示

list1= [ 'a,','b']

我想将此字符串架构转换为映射,以便我可以查找该映射以进行进一步处理。

我尝试过类似的选项

from operator import methodcaller
y = map(methodcaller("split", ":"), schema)

结果是

[['a', 'int'], ['b', 'string'], ['c', 'int'], ['d',  'decimal(18'], ['2)']]

我想在字典中查找 list1 以获取值。

即。对于 list1 中的 a,我需要在 y 中查找并获取“int”值。

我是Python新手。请帮助我实现这个逻辑。

最佳答案

由于 decimal(18,2) 值,您的架构字符串有问题。您应该更改架构或小数点的分隔符以便更轻松地拆分,例如:a:int;b:string;c:int;d:decimal(18,2),但如果您不能这样做,它可以与正则表达式一起使用,例如:

import re

schema = "a:int,b:string,c:int,d:decimal(18,2)"
regex = re.compile("\w+:\w+(?:\(\d+,\d+\))?")

dictionary = {}
for pair in regex.finditer(schema):
    k, v = pair.group(0).split(":")
    dictionary[k] = v

list1 = ['a', 'b']

for e in list1:
    print("key:" + e + ", value:" + dictionary[e])

如果您可以更改架构,那么您可以使用简单的拆分:

schema = "a:int;b:string;c:int;d:decimal(18,2)"

dictionary = {}
for pair in schema.split(";"):
    k, v = pair.split(":")
    dictionary[k] = v

关于 python : List of string in key value pairs to map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57360146/

相关文章:

python - 在 python 中创建 lambda 时,i=i 是什么意思?

Python - 递归日期排序算法

python-3.x - 无法将音频上传到 Telegram 错误请求 : failed to get HTTP URL content

python - 如何保存通过camera.capture_continuous(格式rgb)读取的图像并将其保存到文件中

c# - 是否可以通过命令提示符从 C# 运行 python 代码?

android - 通过 adb shell 启动 SL4A 应用程序

python - 删除引号python外的字符

python - 使用 Selenium 从 div 获取文本

python - Pandas 创建一个数据框,其条目是另一个数据框的行之间的关系?

python-3.x - Nuitka编译的*.exe程序执行时如何隐藏cmd控制台?