【问题标题】:Storing set of formatted customized string to dictionary using python使用python将一组格式化的自定义字符串存储到字典中
【发布时间】:2016-11-30 12:48:33
【问题描述】:

我需要在 dict 对象中获取“结果”,我正在循环并获取以下格式的键和值,这些格式已在变量“opp”中定义。

我需要的是我想将数据(即来自 opp)存储到一个字典中。我该怎么做?

这是我的代码:

for service, svc_limits in result.items():
    for limit_name, limit in svc_limits.items():
        for warn in limit.get_warnings():

            opp = ("'{service}/'{limit_name}'': '[{u}]'".format(
                              service=service,limit_name=limit_name,u=str(warn))
                  )

我的示例输出:

{"contact": {"permanentnumber":"sample123","tempnum":"jki345"}}

由此,我得到了输出

contact/permanentnumber:sample123
contact/tempnum:jki345

并将其作为单独的字符串数据类型获取。

我需要以字典格式存储这组字符串,以便使用转储写入 YAML 文件,但它不起作用。只有一组值被写入文件。我需要将这两个值都存储在新文件中。

        opp = ("'{service}/'{limit_name}'': '[{u}]'".format(
                            service=service,
                            limit_name=limit_name,
                            u=str(warn)

                        )
         )
         samp = {opp}

它只返回 Set dtatype,但我这里需要的是字典。

set(["'Contact/'permanentnumber'': '[4]'"]) <type 'set'>
set(["'Contact/'temporarynum' ': '[4]'"]) <type 'set'>

我该如何处理?

【问题讨论】:

    标签: python-2.7 python-3.x object dictionary pyyaml


    【解决方案1】:

    在 Python 中,如果 a 是一个变量,而你这样做:

    x = {a}
    

    那么x 将是一个包含一个元素的集合。如果您希望 x 成为 dict,请执行以下操作:

    x = {'somekey': a}
    

    或:

    x = dict(somekey=a)
    

    somekey 使用什么取决于您的应用程序,但不将{"contact": {"permanentnumber":"sample123","tempnum":"jki345"}} 转换为:

    contact/permanentnumber: sample123
    contact/tempnum: jki345
    

    通过做

    import sys
    import ruamel.yaml
    
    result = {"contact": {"permanentnumber":"sample123","tempnum":"jki345"}}
    
    opp = {}
    
    for service, svc_limits in result.items():
        for limit_name, limit in svc_limits.items():
                opp["{service}/{limit_name}".format(service=service, limit_name=limit_name)] = \
                    "{u!s}".format(u=limit)
    
    ruamel.yaml.round_trip_dump(opp, sys.stdout)
    

    它为您提供 YAML 输出:

    contact/tempnum: jki345
    contact/permanentnumber: sample123
    

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 2014-07-09
      • 2011-01-18
      • 1970-01-01
      相关资源
      最近更新 更多