我试图自己做一些简单的项目来更好地学习python,我想要做的是将值格式化为字段。我设法按升序对键进行排序,并将键与各自的列表进行匹配。 我知道为什么只有列表中的第一个单词被格式化,这是因为它被视为一个中间有空格的字符串,我完全不知道如何继续
它应该是这样的:
Id name species age spayed/neutered
1020 b cat 9 yes
1022 brn dog 10 no
1023 bren cat 2 yes
这是将显示字典信息的相关功能,以及我目前的进展情况。
cust_rec = {'1020': ['b','cat','9','yes'], '1023': ['brn','dog','10','no'], '1022': ['bren','cat','2','yes']}
def cust_disp (cust_rec):
for key in sorted(cust_rec.keys()):
print("{0:12s} {1:10s} {2:10s} {3:4s} {4:s}".format("ID","Name","Species","Age","Spayed/Neutered"))
print ("{0:12s} {1:10s}".format(key, " ".join(cust_rec[key]) ) )
如果我需要澄清任何事情,请告诉我。
答案 0 :(得分:0)
熊猫可能是一个不错的选择
import pandas as pd
pd.DataFrame(cust_rec).T
否则试试这个:
for key, vals in cust_rec.iteritems():
to_print = '\t'.join(str(val) for val in vals)
print key + '\t' + to_print
答案 1 :(得分:0)
您可以将格式化数据放入list
,然后加入列表
cust_rec = {
"Id": ["name", "species", "age", "spayed/neutered"],
'1020': ['b', 'cat', '9', 'yes'],
'1023': ['brn', 'dog', '10', 'no'],
'1022': ['bren', 'cat', '2', 'yes']
}
a = [
f"{k:>15} {v[0]:>15} {v[1]:>15} {v[2]:>15} {v[3]:>15}"
for k, v in cust_rec.items()
]
if __name__ == '__main__':
print("\n".join(a))
打印
Id name species age spayed/neutered
1020 b cat 9 yes
1023 brn dog 10 no
1022 bren cat 2 yes
答案 2 :(得分:0)
你正在做的是创建一个列表的字符串,在元素之间有一个空格。你想要做的是使所有的字符串长度相同,白色空格填充剩余的所需长度,然后将它们连接成一个字符串。你可以用ljust string方法做到这一点。
def cust_disp(cust_rec):
columns = ["ID", "Name", "Species", "Age", "Spayed/Neutered"]
formated_columns = "".join([column.ljust(10, " ") for column in columns])
print(formated_columns)
for key in sorted(cust_rec.keys()):
print("{0:10s}{1}".format(
key, "".join([field.ljust(10, " ") for field in cust_rec[key]])))