繁体   English   中英

有没有办法从单个列表制作字典,其中字典的键和值取自特定索引

[英]Is there a way to make a dictionary from a single list where the key and value for the dict are taken from a specific index

从几个文本文件创建列表后,我得到以下信息:

['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']

有没有办法像这样制作 2 个列表:

lst1 =['host', 'port', 'service_name', 'user', 'password']
lst2 =['myhost.ro', '12222', 'SRVNM', 'MGA', 'Test']

或者从原始列表制作字典,这是我的最终目标,像这样的字典:

Dict['host'] = 'myhost.ro'

您可以使用字典理解:

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'}

您可以使用str.stripstr.splitmapzip和理解生成器的某种组合来做到这一点:

# ...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()似乎是更好的选择。

试试这个:

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)
original = ['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']

b = dict([a.split(' : ') for a in original])

您可以将您的列表拆分为两个您想要的列表:

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)

Output:

['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)

Output:

{'user': 'MGA', 'port': '12222', 'service_name': 'SRVNM', 'password': 'Test', 'host': 'myhost.ro'}

利用字符串方法split和 list \ dict comprehensions。

得到你的字典:

data = ['host : myhost.ro', 'port : 12222', 'service_name : SRVNM', 'user : MGA', 'password : Test']
{entry.split(' : ')[0]:entry.split(' : ')[1] for entry in data}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM