【问题标题】:need help in making key value pair in python在 python 中制作键值对时需要帮助
【发布时间】:2012-10-08 23:07:52
【问题描述】:

我有这个代码:

   while i<len(line):
        if re.findall(pattern, line[i]):
            k,v = line[i].split('=')
            print k
            token = dict(k=v)
            print token
            break

我得到的结果是:

ptk
{'k': 'ptk_first'}

如何让这几行代码更好看,字典看起来像这样:

{'ptk': 'ptk_first'}

【问题讨论】:

  • 为什么在这里使用while 循环?你甚至没有进步i。请给出一个完整的例子,我们可以运行看看输出。
  • 对不起,这只是部分代码,你可以假设i=0
  • 你还没有给我们pattern。在以后的问题中,请提供short, complete, self-contained example。我关于循环的主要观点是 i 不应该存在 - 为什么使用 while 循环而不是 for 循环来循环序列?

标签: python dictionary key-value


【解决方案1】:
for line in lines:
    if re.match(pattern, line):
        k,v = line.split('=')
        token = {k:v}
        print token

【讨论】:

    【解决方案2】:

    类似这样的:

    lines="""\
    key1=data on the rest of line 1
    key2=data on the rest of line 2
    key3=data on line 3"""
    
    d={}
    for line in lines.splitlines():
        k,v=line.split('=')
        d[k]=v
    
    print d 
    

    【讨论】:

      【解决方案3】:
      In [112]: line="ptk=ptk_first" 
      
      In [113]: dict([line.split("=")])
      Out[113]: {'ptk': 'ptk_first'}
      

      为您的代码:

      for line in lines:
          if re.findall(pattern, line):
              token = dict([line.split("=")])
              print token
      

      【讨论】:

      • 这正是我想要的!非常感谢!
      • @wim 实际上它们是必要的,否则我必须使用元组 dict((line.split("="),))
      • @AshwiniChaudhary:题外话:你从什么复制/粘贴代码?如何在我的终端上启用In [lineno] 功能(?)
      【解决方案4】:

      用正则表达式你可以试试这个:

      >>> import re
      >>> lines="""
      ... ptk=ptk_first
      ... ptk1=ptk_second
      ... """
      >>> dict(re.findall('(\w+)=(\w+)',lines,re.M))
      {'ptk1': 'ptk_second', 'ptk': 'ptk_first'}
      

      【讨论】:

        猜你喜欢
        • 2016-08-17
        • 2023-01-11
        • 2020-06-10
        • 1970-01-01
        • 1970-01-01
        • 2015-12-05
        • 2012-08-11
        • 1970-01-01
        • 2014-02-20
        相关资源
        最近更新 更多