【问题标题】:Converting dictionary into string将字典转换为字符串
【发布时间】:2018-04-06 13:02:36
【问题描述】:
d={'a':'Apple','b':'ball','c':'cat'}

我有上面的字典,我希望我的输出类似于下面提到的结果

res="a=Apple,b=ball,c=cat"

是否有可能以pythonic方式然后请回答我尝试了各种方法但没有得到想要的输出?

【问题讨论】:

  • 你尝试了什么?请分享您过去的工作

标签: python python-3.x dictionary


【解决方案1】:

将您的字典读取为键/值对 (dict.items()),然后将它们格式化为您喜欢的字符串:

d = {'a': 'Apple', 'b': 'ball', 'c': 'cat'}

res = ",".join("{}={}".format(*i) for i in d.items())  # a=Apple,c=cat,b=ball

虽然不能保证dict 的顺序,但如果顺序很重要,请使用collections.OrderedDict()

【讨论】:

  • @SamreshKumarJha - 在 Python 3.6 之前(至少在 CPython 上)字典不能保证保持顺序。事实上,它们只保证在 Python 3.6 的 CPython 实现中保留插入顺序 - 解释器范围的保证仅在 Python 3.7 中提供。所有不能保证在 CPython 3.6+ 或通用 Python 3.7+ 解释器上运行的东西都不应指望dict 被订购。
  • 轻微挑剔:join 可以接受列表/元组理解,无需将其包裹在额外的括号中
【解决方案2】:

一种方法是通过dict.items 进行迭代并使用多个str.join 调用。

d = {'a':'Apple','b':'ball','c':'cat'}

res = ','.join(['='.join(i) for i in d.items()])

# 'a=Apple,b=ball,c=cat'

如果您需要按键排序的商品,请使用sorted(d.items())

【讨论】:

    【解决方案3】:
    def format_dict(d):
        vals = list(d.values())
        return "={},".join(d.keys()).format(*vals) + "={}".format(vals[-1])
    
    d = {'a': 'Apple', 'b': 'ball', 'c': 'cat'}
    format_dict(d)  # -> 'a=Apple,b=ball,c=cat'
    

    这会将所有键连接到一个包含替换字段的大字符串中,然后我们格式化将 dict 值作为 args 传递。没有尾随替换字段,因此我们将字典中的最后一个值连接到我们的大字符串。

    【讨论】:

      【解决方案4】:

      对于任何来这里寻找显式提取字典键和值的方法的人(例如,如果需要进一步格式化):

      d = {'a':'Apple','b':'ball','c':'cat'}
      res = ','.join(f'{k}={v}' for k, v in d.items())  
      # --> a=Apple, b=ball, c=cat
      

      (使用 python 3.6+ f-strings)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 2021-08-21
        相关资源
        最近更新 更多