我有一个如下所示的字符串
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/