如何从列表中创建一个字典,只包含键列表和键值对(Python)?

Ame*_*Chu 4 python string dictionary list

这是此问题的扩展:如何在列表中拆分字符串以在Python中创建键值对

与上述问题的区别在于我列表中的项目并非都是键值对; 某些项目需要分配一个值.

我有一个清单:

list = ['abc=ddd', 'ef', 'ghj', 'jkl=yui', 'rty']
Run Code Online (Sandbox Code Playgroud)

我想创建一个字典:

dict = { 'abc':'ddd', 'ef':1, 'ghj':1, 'jkl':'yui', 'rty':1 }
Run Code Online (Sandbox Code Playgroud)

我正在思考以下问题:

a = {}
for item in list:
   if '=' in item: 
     d = item.split('=')
     a.append(d) #I don't I can do this.
   else:
     a[item] = 1 #feel like I'm missing something here.
Run Code Online (Sandbox Code Playgroud)

Fab*_*tor 12

对于每个拆分"对",您可以追加[1]并提取前两个元素.这样,当没有值时将使用1:

print dict((s.split('=')+[1])[:2] for s in l)
Run Code Online (Sandbox Code Playgroud)

  • 这是一个惊人的.辉煌! (3认同)

Moo*_*sez 5

我会使用与您链接的帖子类似的东西。

d = dict(s.split('=') for s in a)
Run Code Online (Sandbox Code Playgroud)

如果您结合从这篇文章中学到的知识(即使用列表创建字典)以及在 Python 列表理解中使用 if/else 的知识,您可以得出如下结论:

d = dict(s.split("=", maxsplit=1) if "=" in s else [s, 1] for s in l)
Run Code Online (Sandbox Code Playgroud)

其作用是,1如果拆分列表中没有等号,则将其添加到拆分列表的末尾。