Python 将 format_map 与字典一起使用

标签 python python-3.x format

我有一本字典:

People={
       'name':['john','peter'],
       'age':[56,64]
       }

输出

'My name is {name[0]},i am {age[0]} old'.format_map(People)

给予

'My name is john,i am 56 old'

我想在循环中使用 format_map 来获取:

'My name is {name[x]},i am {age[x]} old'

对于字典中的每个项目,例如:

'My name is john,i am 56 old'
'My name is peter,i am 64 old'

但是像这样的循环:

['My name is {name[x]},i am {age[x]} old'.format_map(People) for x in range(0,len(People['name']))]

给出:

KeyError: 'name'

最佳答案

您可能希望考虑为您的数据使用不同的结构,将每个人的所有数据保存在一起。只有两个人并且每个人只有两个属性,这并不重要,但是如果你有很多人和很多属性,那么只需要一个列表中的一个错误就会破坏同步。如果发生这种情况,您数据库中的一个或多个人将得到与他们相关的错误数据。

一种可能性是使用字典列表,每个人一个字典,例如

new_people = [
    {'age': 56, 'name': 'john'},
    {'age': 64, 'name': 'peter'}
]

然后您可以通过执行以下操作轻松打印它:

for d in new_people:
    print('My name is {0}, I am {1} years old.'.format(d['name'], d['age']))

输出:

My name is john, I am 56 years old.
My name is peter, I am 64 years old.

将现有的 People 字典转换为字典列表并不难。使用几个 for 循环可能更具可读性,但我是用这个嵌套列表理解/生成器表达式来完成的:

new_people = [dict(t) for t in (((k,v[i]) for k,v in People.items()) for i in range(len(People['name'] )))]

附言。 Python 中的惯例是对普通变量使用小写名称。以大写字母开头的名称,如 People,通常用于类。您不必 遵循该约定,但它确实让阅读您的代码的人更容易。您可能会注意到,在上面发布的代码中,People 是浅蓝色的,这是因为 SO 代码格式化程序认为它是一个类名。

关于Python 将 format_map 与字典一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25956888/

相关文章:

python - 在python中使用xlrd从xls中提取数据

Python3 __pycache__ 即使 PYTHONDONTWRITEBYTECODE=1 也会生成

dart - VSCode 为数组等的代码格式设置宽度

c++ - float转QString的格式

c - fscanf 格式说明符 - 以或不带注释字符串结尾的按列数字数据

python - 如何将模块从一个目录导入到另一个目录?

Python - 检查一个字符是否在字典中,如果不在则处理它

python - 垃圾收集-mark + sweep是否必须为整体/原子

list - python : Sending a dictionary's items to a list of lists

linux - Python3 mlpy 安装错误 - ‘Py_InitModule3’ 未在此范围内声明