【问题标题】:Convert a list of delimited strings to a dictionary将分隔字符串列表转换为字典
【发布时间】:2022-01-21 09:09:30
【问题描述】:

我有一个表单的输入列表

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 看起来很难看。有没有更简洁的单线来获得想要的结果?

【问题讨论】:

  • {k: v for v, k in (i.split('|') for i in c)}
  • dict(reversed(i.split('|')) for i in c)

标签: python dictionary-comprehension


【解决方案1】:

这应该适用于单线案例:

print(dict(reversed(i.split('|')) for i in ['a|b', 'c|d', 'e|f']))

【讨论】:

    【解决方案2】:

    这里的事情是按| 拆分条目,并将第二个值作为键,第一个作为字典的值。所以基本上你可以这样做:

    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)
    

    【讨论】:

      【解决方案3】:

      作为dict([[1,2]])={1: 2},我们可以这样使用:

      c = ['a|b', 'c|d', 'e|f']
      c_dict = dict(t.split("|")[::-1] for t in c)
      

      由@deceze 点编辑

      【讨论】:

      • for .. in 表达式周围的[] 是多余且低效的……
      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2015-07-12
      • 2013-05-08
      • 2011-07-12
      • 2014-05-23
      相关资源
      最近更新 更多