【问题标题】:Python dictionary key/value delimiterPython 字典键/值分隔符
【发布时间】:2013-10-14 13:55:32
【问题描述】:

是否可以获得一个python字典,其中键被包裹在“”而不是''中?

类似这样的:

{"key_1":"value_1", .... , "key_n":"value_n"}

代替:

{'key_1':'value_1', .... , 'key_n':'value_n'}

【问题讨论】:

  • "key_1"'key_1' 相同。
  • 这两个完全一样;这只是格式上的差异。
  • 这个问题是关于以某种方式打印字典,还是在打印之前以某种方式实际改变其性质?
  • 这个字典变成了一个字符串,然后馈送到另一个资源(我无法控制)。使用“keys_1”而不是“key_1”不会产生预期的结果

标签: python


【解决方案1】:

嗯,看起来你想要 JSON 格式而不是......所以也许:

>>> d = {"key_1":"value_1", "key_n":"value_n"}
>>> d
{'key_n': 'value_n', 'key_1': 'value_1'}
>>> import json
>>> json.dumps(d)
'{"key_n": "value_n", "key_1": "value_1"}'

【讨论】:

    【解决方案2】:

    是的。报价是完全可以互换的;您可以使用任何一个定义字典。您还可以使用三引号 '''"""

    【讨论】:

      【解决方案3】:

      在字典的字符串表示中强制使用双引号的最简单方法是将字典转换为 json。但是,这确实会丢失一些类型信息,因为(例如)数字键也将用双引号括起来:

      >>> d = {'key_1':'value_1', 'key_n':'value_n'}
      >>> import json
      >>> json.dumps(d)
      '{"key_1": "value_1", "key_n": "value_n"}'
      >>> json.dumps({1:'a', 2:'b'})
      '{"1": "a", "2": "b"}'
      

      如果您想要双引号的原因是将结果字符串用于 JSON,那么这就是您想要的答案。另一方面,如果要求真的只是强制显示双引号,否则将其保留为字典,那么您可以做的最好的事情可能是编写自己的转换代码。

      【讨论】:

      • 在我的情况下,我使用 json.dumps 获得以下内容:{u'key':u'value'}
      • @steve,哪个版本的 Python,您确定没有另一个名为 json 的模块隐藏系统吗?那不是有效的 json,所以如果你知道你的 json 模块似乎很坏。
      • 它是 Splunk (dev.splunk.com) 中包含的 python。如何直接明确地引用特定模块? ..像“java.lang.String”
      【解决方案4】:

      是的,除非字符串中有引号。单引号和双引号是一样的,但是

      如果出于某种原因我的其中一个键是我不知道:“不是”我会使用双引号。如果我的键有双引号,我会使用单引号。

      编辑:我并不是说在关键标识符中使用引号是对还是错,我只是说如果这是您所面临的现实,则需要考虑。

      【讨论】:

        【解决方案5】:

        如果你想打印字典,你可以使用这个 sn-p

        print "{%s}" % ", ".join('"%s":"%s"' % pair for pair in D.items())
        

        【讨论】:

          猜你喜欢
          • 2022-01-07
          • 2014-07-03
          • 2019-02-11
          • 2015-07-13
          • 1970-01-01
          • 1970-01-01
          • 2014-09-13
          • 2016-06-07
          • 2021-09-27
          相关资源
          最近更新 更多