【问题标题】:python: modifying dictionary to stringpython:将字典修改为字符串
【发布时间】:2013-07-17 04:42:48
【问题描述】:

下面是我得到的代码。但是,我不知道如何摆脱最后一个逗号。 我只想用空格将键与值隔开,然后在其后用逗号将其与下一个键隔开。

另外,关于文件的问题。 如果我打开一个文件并读取它,并想再次读取该文件,是否没有办法将光标移到文件的开头而不关闭并再次打开文件?

def dict_to_str(d):
    """ (dict) -> str

    Return a string containing each key and value in d. Keys and
    values are separated by a blank space. Each key-value pair is
    separated by a comma. 

    >>> dict_to_str({3: 4, 5: 6})
    '3 4,5 6'
    """ 
    s = ''
    for (k, v) in d.items:
        s = s + str(k) + " " + str(v) + ','
    return s

【问题讨论】:

  • 请将您的问题分成单独的条目。如果您有两个完全不同的问题,将很难找到正确的答案。对其他人也不会很有用。将dict转换为字符串和不重新打开就改变文件位置有什么关系?
  • 只是想我会在里面挤另一个问题。对不起,下次会记住的!
  • 好吧,如果问题与主要问题相关(即使是松散的)也没关系。但在你的情况下,它看起来不是。请阅读faq - 它对什么格式的问题最适合 SO 有一些很好的解释。

标签: python file dictionary


【解决方案1】:

改用join

return ', '.join([str(key) + ' ' + str(value) for key, value in d.items()])

或更详细地说:

items = []

for key, value in d.items():
    items.append('{0} {1}'.format(key, value))

return ', '.join(items)

至于文件,可以回到开头:

handle.seek(0)

【讨论】:

  • 可爱的线条。就像你的第一个例子让我爱上了 python。
  • @Blender:有什么理由是 return ', '.join([str(key) + ' ' + str(value) for key, value in d.items()]) 而不是 return ', '.join(str(key) + ' ' + str(value) for key, value in d.items())(第二个示例不会在两者之间创建列表)?
  • @Tadeck:' '.join() 使用列表理解更快,因为它具有确定的大小。我不记得真正的原因,但关于join 必须为字符串分配内存。
  • 感谢您的帮助!
  • @Blender:你似乎是对的(证明:ideone.com/GsUTrk)。感谢您的澄清。
【解决方案2】:

只返回除最后一个字符之外的所有字符串,像这样 -

def dict_to_str(d):
    """ (dict) -> str

    Return a string containing each key and value in d. Keys and
    values are separated by a blank space. Each key-value pair is
    separated by a comma. 

    >>> dict_to_str({3: 4, 5: 6})
    '3 4,5 6'
    """ 
    s = ''
    for (k, v) in d.items():
        s += str(k) + " " + str(v) + ','
    return s[:-1] 

输出测试 -

>>> dict_to_str({1:2, 3:4})
'1 2,3 4'

P.S - d.items 是一个函数,您不能对其进行迭代,您需要调用该函数并迭代返回的列表。

对于您的其他问题,您可以直接fileVar.seek(0)

【讨论】:

  • 啊!忘了我可以使用切片。您的解决方案很棒,非常感谢! :)
  • 很高兴能提供帮助。 :)
猜你喜欢
  • 2021-06-28
  • 2016-01-27
  • 2019-07-17
  • 2018-05-19
  • 2013-03-13
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多