PYTHON将字典打印成表格

将字典打印成表格

{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()

img

如有帮助,望采纳!谢谢!

将字典打印成表格

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 ¥*之和