【问题标题】:Converting a string into a list or dict in Python在 Python 中将字符串转换为列表或字典
【发布时间】:2013-10-20 17:36:40
【问题描述】:

我需要在对值上换行并将其转换为列表或字典。有谁知道在 Python 中执行此操作的简单方法?

从这里:

1
Petrov
2
Ivanov
3
Sidorov

["1", "Petrov"], ["2", "Ivanov"], ["3", "Sidorov"]

或字典:

{"1": "Petrov", "2": "Ivanov", "3": "Sidorov"}

【问题讨论】:

  • 输入行如何给出?在文件中还是在字符串列表中?
  • 字符串列表。分隔符“\n”

标签: python


【解决方案1】:
>>> strs = """1                            
Petrov
2
Ivanov
3
Sidorov"""
>>> dict(zip(*[iter(strs.splitlines())]*2))
{'2': 'Ivanov', '3': 'Sidorov', '1': 'Petrov'}

相关:How does zip(*[iter(s)]*n) work in Python?

【讨论】:

    【解决方案2】:

    此代码将返回一个字典:

    inp = open("file")
    d = dict()
    k = list()
    v = list()
    for line in inp:
        if line.strip("\n").isdigit():
            k.append(line.strip("\n"))
        else:
            v.append(line.strip("\n"))
    print dict(zip(k,v))
    

    【讨论】:

      【解决方案3】:

      通过操作列表中的奇数项和偶数项来为 hcwhsa 的解决方案添加一点变化:

      >>> s = "1\nPetrov\n2\nIvanov\n3\nSidorov"
      >>> dict(zip(s.split("\n")[::2], s.split("\n")[1::2]))
      {'1': 'Petrov', '3': 'Sidorov', '2': 'Ivanov'}
      

      Shortest way to slice even/odd lines from a python array?

      【讨论】:

        【解决方案4】:
        >>> strs = """1                            
        Petrov
        2
        Ivanov
        3
        Sidorov"""
        >>> i = iter(strs.split())
        >>> {item: i.next() for item in i}
        {'1': 'Petrov', '3': 'Sidorov', '2': 'Ivanov'}
        

        >>> i = iter(strs.split())
        >>> [[item, i.next()] for item in i]
        [['1', 'Petrov'], ['2', 'Ivanov'], ['3', 'Sidorov']]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-24
          • 2016-12-05
          • 1970-01-01
          • 2013-10-11
          • 2015-06-25
          相关资源
          最近更新 更多