从几个文本文件创建列表后,我得到以下内容:
['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']
有没有办法制作这样的两个列表:
lst1 =['host', 'port', 'service_name', 'user', 'password']
lst2 =['myhost.ro', '12222', 'SRVNM', 'MGA', 'Test']
或者从原始列表中制作一本字典,这是我的最终目标,一本这样的字典:
Dict['host'] = 'myhost.ro'
您可以使用dict理解:
lst = ['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']
dct = {key: value for item in lst for key, value in [item.split(" : ")]}
print(dct)
产生
{'host': 'myhost.ro', 'port': '12222', 'service_name': 'SRVNM', 'user': 'MGA', 'password': 'Test'}
试试这个:
data = ['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']
data_dict = dict([tuple(e.split(" : ")) for e in data])
print(data_dict)
您可以将您的列表拆分为两个您想要的列表,如下所示:
myList = ['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']
list1 = []
list2 = []
for i in myList:
element1 = i.split(":")[0]
element2 = i.split(":")[1]
list1.append(element1)
list2.append(element2)
print(list1)
print(list2)
输出:
['host ', 'port ', 'service_name ', 'user ', 'password ']
[' myhost.ro', ' 12222', ' SRVNM', ' MGA', ' Test']
或者您最终想要的词典将通过以下方式实现:
newDict = {}
for i in myList:
key = i.split(":")[0].strip()
value = i.split(":")[1].strip()
newDict[key] = value
print(newDict)
输出:
{'user': 'MGA', 'port': '12222', 'service_name': 'SRVNM', 'password': 'Test', 'host': 'myhost.ro'}
original = ['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']
b = dict([a.split(' : ') for a in original])
您可以使用str.strip
、str.split
、map
、zip
的一些组合来实现这一点,理解生成器:
# ...to obtain the `dict`
dict(map(str.strip, x.split(':')) for x in ll)
# {'host': 'myhost.ro', 'port': '12222', 'service_name': 'SRVNM', 'user': 'MGA', 'password': 'Test'}
# ...to obtain the "parallel" sequences (`tuples`)
l1, l2 = zip(*(map(str.strip, x.split(':')) for x in ll))
l1
# ('host', 'port', 'service_name', 'user', 'password')
l2
# ('myhost.ro', '12222', 'SRVNM', 'MGA', 'Test')
假设输入为:
ll = ['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']
此外,在这个用例中,dict()
似乎是一个更好的选项。
利用字符串方法split
和list\dict综合。
获取您的dict:
data = ['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']
{entry.split(' : ')[0]:entry.split(' : ')[1] for entry in data}