将字典打印成表格
{portfolio = {
'date' : '2013-11-27',
'cash' : 10000,
'ABC' : 5,
'DEF' : 8
}}
Your portfolio on 2013-11-27:
Capital type | Volume | Val/Unit* | Value in ¥*
------------------------+-----------+---------------+------------------
Cash | 1 |10000.00 | 10000.00
Shares of ABC | 5 | 686.50 | 3432.50
Shares of DEF | 8 | 504.11 | 4032.87
------------------------+-----------+--------------+---------------------
TOTAL VALUE 17465.37
题目中漏掉了一些数据,根据处理结果要求构建了一下,主要对字典健值的操作,使用tabulate库打印出格式化表格,参考如下代码:
from tabulate import tabulate
orig = {'portfolio': {
'date': '2013-11-27',
'cash': 1,
'ABC': 5,
'DEF': 8
},'Val/Unit*':{
'cash': 10000,
'ABC': 686.50,
'DEF': 504.11
}
}
t=list(orig.keys())[0]
vol=orig[t]
table_header = ['Capital type', 'Volume', 'Val/Unit*', 'Value in ¥*']
date=vol['date']
print(f'Your {t} on {date}:')
vs=dict()
for a,b,c in zip(list(vol.keys())[1:],list(orig[t].values())[1:],orig['Val/Unit*'].values()):
vs.update({a:b*c})
orig.update({"Value in ¥*": vs})
table_data=[(x,y,z,u) for x,y ,z ,u in zip(['Cash','Shares of ABC','Shares of DEF'],list(orig[t].values())[1:],list(orig['Val/Unit*'].values()),list(orig['Value in ¥*'].values()))]
#print(table_data)
print(tabulate(table_data, headers=table_header, tablefmt='grid'))
print(f'TOTAL VALUE{sum(orig["Value in ¥*"].values()):>45}')
运行结果:
F:\2021\qa\ot3>t1
Your portfolio on 2013-11-27:
+----------------+----------+-------------+---------------+
| Capital type | Volume | Val/Unit* | Value in ¥* |
+================+==========+=============+===============+
| Cash | 1 | 10000 | 10000 |
+----------------+----------+-------------+---------------+
| Shares of ABC | 5 | 686.5 | 3432.5 |
+----------------+----------+-------------+---------------+
| Shares of DEF | 8 | 504.11 | 4032.88 |
+----------------+----------+-------------+---------------+
TOTAL VALUE 17465.38
如对你有帮助 ,请点采纳按钮支持一下。
是类似这样的表格吗
你题目的解答代码如下:
portfolio = [{
'date' : '2013-11-27',
'cash' : 10000,
'ABC' : 5,
'DEF' : 8
},{
'date' : '2013-11-28',
'cash' : 10001,
'ABC' : 7,
'DEF' : 5
}]
for k in portfolio[0].keys():
print(f'{k:>11}',end="")
print()
for d in portfolio:
for v in d.values():
print(f'{v:>11}',end="")
print()
如有帮助,望采纳!谢谢!
将字典打印成表格
portfolio = {
'date' : '2013-11-27',
'cash' : 10000,
'ABC' : 5,
'DEF' : 8
}
Your portfolio on 2013-11-27:
Capital type | Volume | Val/Unit* | Value in ¥*
----------------------+---------+--------------+----------------
Cash | 1 |10000.00 | 10000.00
Shares of ABC | 5 | 686.50 | 3432.50
Shares of DEF | 8 | 504.11 | 4032.87
----------------------+---------+--------------+----------------
TOTAL VALUE 17465.37
不好意思漏条件了,还有另一个字典
stocks = {
'ABC' : {
'2013-11-26' : [435.273010, 435.273010, 425.050995, 434.835999],
'2013-11-27' : [434.618011, 686.050000, 423.273010, 428.072998],
'2013-11-28' : [430.472992, 430.472992, 417.273010, 418.364014],
#...
},
'DEF' : {
'2013-11-26' : [751.000000, 755.500000, 731.500000, 742.000000],
'2013-11-27' : [740.000000, 504.110000, 718.000000, 730.000000],
'2013-11-28' : [733.500000, 735.500000, 719.500000, 721.000000],
#...
},
}
表格中volume为股票数,val/Unit为每股价钱位于stock中股票字典中键后第二列即存在686和504的列,value in ¥为股票总价格
cash行volume为1,total value 为各项Value in ¥*之和