我有一个字典列表,看起来像这样:
lst = [{'id': 'ID1', 'Name':'Name1', 'Surname':'Surname1'},
{'id': 'ID2', 'Name':'Name2', 'Surname':'Surname2'},
{'id': 'ID3', 'Name':'Name3', 'Surname':'Surname3'}]
我希望我的输出看起来像这样:
idnumber: ID1 ; Name: Name1 ; Surname: Surname1
idnumber: ID2 ; Name: Name2 ; Surname: Surname2
idnumber: ID3 ; Name: Name3 ; Surname: Surname3
作为我的起点,至少从id部分开始,我写:
for l in lst:
for key,value in l.items():
if l.keys() == "id":
print("idnumber: ", l.values())
不幸的是,它对我不起作用:(任何建议都会有所帮助。
方法如下:
lst = [{'id': 'ID1', 'Name':'Name1', 'Surname':'Surname1'},
{'id': 'ID2', 'Name':'Name2', 'Surname':'Surname2'},
{'id': 'ID3', 'Name':'Name3', 'Surname':'Surname3'}]
keys = ['id', 'Name', 'Surname']
aliases = {'id': 'idnumber'}
for d in lst:
for i, k in enumerate(keys):
print(f'{aliases.get(k, k)}: {d[k]}',
end=' ; ' if i+1<len(keys) else 'n')
输出:
idnumber: ID1 ; Name: Name1 ; Surname: Surname1
idnumber: ID2 ; Name: Name2 ; Surname: Surname2
idnumber: ID3 ; Name: Name3 ; Surname: Surname3
工作原理:
- keys保存顺序 中要使用的键的列表
- aliases保存要打印的密钥的名称(如果没有别名,
aliases.get(k, k)
搜索别名并使用密钥名称) enumerate
允许识别最后一个键以打印换行符而不是;
分隔符
遍历字典列表并格式化每个键值对以最终将它们连接在一起。
lst = [{'id': 'ID1', 'Name':'Name1', 'Surname':'Surname1'},
{'id': 'ID2', 'Name':'Name2', 'Surname':'Surname2'},
{'id': 'ID3', 'Name':'Name3', 'Surname':'Surname3'}]
for d in lst:
print('; '.join(f"{k}: {v}" for k, v in d.items()))