python - 将嵌套字典值转换为单个字符串

标签 python dictionary

如何将下面的嵌套字典值转换为单个字符串?

data = {'people': {'first': {'fname': 'P1', 'lname': 'L1'}, 'second': { 'fname': 'P2', 'lname': 'L2'}}}

输出应为P1 L1, P2 L2

这是我当前的代码:

print ', '.join("%s %s" % (data['people'][person].get('fname'), data['people'][person].get('lname')) for person in data['people'])

对于人员字典中的项目来说,这是一种有效的方法吗?如果不是如何改进?

最佳答案

您可以通过仅循环值并使用 format string 中的命名字段来使表达式有点短。 (强调是为了使其更具可读性):

>>> print ', '.join("{fname} {lname}".format(**p) for p in data['people'].values())
P2 L2, P1 L1

在 Python 3.2+ 中,这也可以使用 str.format_map 来完成:

>>> print (', '.join("{fname} {lname}".format_map(p) for p in data['people'].values()))
P1 L1, P2 L2

如果字典中可能缺少键fnamelname,那么您可以执行以下操作:

def get_values(dct, keys):
    return (dct.get(k) for k in keys)
...
>>> keys = ('fname', 'lname')
>>> print ', '.join("{} {}".format(*get_values(p, keys)) for p in data['people'].values())
P2 L2, P1 L1

  • 如果值的数量很大,则将 values() 替换为 itervalues()。在 Python 3 中仅使用 values()
  • 字典没有任何指定的顺序,因此您不能期望此处的输出为 P1 L1, P2 L2。

关于python - 将嵌套字典值转换为单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40976532/

相关文章:

python - 类可以从不同的文件继承方法(或子类)吗?这是 "Pythonic"吗?

python - 如何将 Python 变量传递给 XPath 表达式?

python - 如何用 Python 生成 2D 高斯?

python - 如何在python中自定义排序列表

python - 在python字典中排序时间戳

Python 2.7 - 递归删除所有 __init__.py 和 __init__.pyc 文件

python - 在 shell/python 中传递变量

c++ - std::map 迭代器到自身

android - 如何在 Android 谷歌地图应用程序中搜索商店?

python - 如何将 JSON 转储从表单填充到 Django 模板?