将分隔字符串列表转换为字典
Convert a list of delimited strings to a dictionary
我有一个表单的输入列表
c = ['a|b', 'c|d', 'e|f']
我想将其转换为 dict
,如
c_dict = {'b': 'a', 'd': 'c', 'f': 'e'}
我可以通过这样的理解来做到这一点
c_dict = {el.split('|')[1]: el.split('|')[0] for el in c}
但是重复的el.split
看起来很难看。有没有更简洁的一行来得到想要的结果?
one-liner 案例应该这样做:
print(dict(reversed(i.split('|')) for i in ['a|b', 'c|d', 'e|f']))
这里的事情是将条目按 |
拆分,并将第二个值作为字典的键,第一个作为字典的值。所以基本上你可以这样做:
def list_to_dict(entries):
res = {}
for entry in entries:
item = entry.split('|')
res[item[1]] = item[0]
return res
或更短的版本是:
def list2dict(entries):
return dict(reversed(x.split('|')) for x in entries)
作为 dict([[1,2]])={1: 2}
我们可以将其用作:
c = ['a|b', 'c|d', 'e|f']
c_dict = dict(t.split("|")[::-1] for t in c)
由@deceze
编辑
我有一个表单的输入列表
c = ['a|b', 'c|d', 'e|f']
我想将其转换为 dict
,如
c_dict = {'b': 'a', 'd': 'c', 'f': 'e'}
我可以通过这样的理解来做到这一点
c_dict = {el.split('|')[1]: el.split('|')[0] for el in c}
但是重复的el.split
看起来很难看。有没有更简洁的一行来得到想要的结果?
one-liner 案例应该这样做:
print(dict(reversed(i.split('|')) for i in ['a|b', 'c|d', 'e|f']))
这里的事情是将条目按 |
拆分,并将第二个值作为字典的键,第一个作为字典的值。所以基本上你可以这样做:
def list_to_dict(entries):
res = {}
for entry in entries:
item = entry.split('|')
res[item[1]] = item[0]
return res
或更短的版本是:
def list2dict(entries):
return dict(reversed(x.split('|')) for x in entries)
作为 dict([[1,2]])={1: 2}
我们可以将其用作:
c = ['a|b', 'c|d', 'e|f']
c_dict = dict(t.split("|")[::-1] for t in c)
由@deceze
编辑