簡體   English   中英

Python:要映射的鍵值對中的字符串列表

[英]Python : List of string in key value pairs to map

我有一個字符串如下

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中的我需要在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM