我正在寻找一种将列表转换为字典的方法,如下所示。这可能吗?预先感谢。
list = [“ 1 / a”,“ 2 / b”,“ 3 / c”]
dict = {“ 1”:“ a”,“ 2”:“ b”,“ 3”:“ c”}
答案 0 :(得分:2)
当然可以。
首先,您可以使用e.split("/")
拆分列表的元素,这将给出一个列表,例如splitted = ["1", "a"]
。
您可以将第一个元素分配给键,将第二个元素分配给值:
k = splitted[0]
v = splitted[1]
或另一种表达方式:
k,v = splitted
然后,您可以遍历列表以构建字典,因此,如果我们将其打包(您不应该调用列表list
,因为list
是一种类型并且已经存在标识符:>
d = {}
for e in elements:
k,v = e.split("/")
d[k] = v
您还可以通过dict理解在一行中做到这一点:
d = {k:v for k,v in [e.split("/") for e in elements]}
答案 1 :(得分:0)
是的。
如果您想将所有内容都放在'/'之后(即第二个字符),则可以执行以下操作:
dict = {c[0]:c[2:] for c in list}
如果您想将所有内容放在'/'之后(但可能不是第二个字符),则可以执行以下操作:
dict = {c[0]:c.split('/')[1] for c in list}
这实际上取决于您的输入和想要的输出
答案 2 :(得分:0)
您可以这样做。
lista = ["1/a", "2/b", "3/c"]
new_dict = {}
for val in lista:
new_dict.update({val[0]:val[2]})
print(new_dict)
答案 3 :(得分:0)
尝试一下
list = ["1as/aasc", "2sa/bef", "3edc/cadeef"]
dict = {i.split('/')[0]:i.split('/')[1] for i in list}
答案将会
{'1as': 'aasc', '2sa': 'bef', '3edc': 'cadeef'}
我给出了另一个测试用例。希望这能回答您的问题。