如何在字典中打印多个项目

2024-06-01 01:32:29 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题似乎是个愚蠢的问题,因为它非常基本,但我真的很挣扎。我有一个来自python binance web socket的不断更新的数据流,即市场中当前货币的价格。我试图区分使用该行时出现的符号和价格:

info = client.get_all_tickers()

它将打印以下内容,这些内容将作为输出的一部分:

[{'symbol': 'ETHBTC', 'price': '0.06327900'}, {'symbol': 'LTCBTC', 'price': '0.00406800'}, ...]

我的目标是将符号和价格分开,并将它们打印在一起,而不是使用“符号”和“价格”这两个短语,这样我就可以完成价格的数学方程,这样我也可以以一种美化的方式输出这两个值

到目前为止,我已经试过了:

symbolGetter = [ swap['symbol'] for swap in info ]

要获取我的符号,请执行以下操作:

priceGetter = [ swap['price'] for swap in info ]

这只能将它们分开,但尝试使用我认为可行的方法将它们相邻打印:

symbolAndPriceGetter = [ swap['symbol', 'price'] for swap in info ]
print(symbolAndPriceGetter)

这给我带来了一个错误:

KeyError: ('symbol', 'price')

尝试另一种方式:

symbolGetter = [ swap['symbol', 'price'] for swap in info ]
priceGetter = [ swap['price'] for swap in info ]
print(symbolGetter, priceGetter)

返回一个列表中打印的符号,然后返回另一个列表中打印的价格

我怎样才能返回(符号,价格)(符号,价格)

谢谢你的帮助


Tags: ininfo列表for方式binance符号价格
3条回答

试试这个:

for a in info:
    print(list(a.values()))

您将获得:

['ETHBTC', '0.06327900']
['LTCBTC', '0.00406800']

另一种解决办法是:

for a in info:
    print(*a.values())

您将获得:

ETHBTC 0.06327900
LTCBTC 0.00406800

您可以将每个项目格式化为如下字符串:

stringified = ['{0} {1}'.format(swap["symbol"], swap["price"]) for swap in info]

然后您可以打印每一个:

for s in stringified:
    print(s)

或在单个操作中:

print('\n'.join(stringified))

两者都将导致:

ETHBTC 0.06327900
LTCBTC 0.00406800

另一方面,如果要将其写入csv,可以使用csv.DictWriter来实现此目的:

with open('swaps.csv', 'w', newline='') as csvfile:
    fieldnames = ['symbol', 'price']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerows(info)

您可以将表达式放入列表中,例如:

prices_as_tuples = [ (swap['symbol'], swap['price']) for swap in info ]

或者,将其格式化为文本

prices_for_printing = [ "%s at %s" % (swap['symbol'], swap['price']) for swap in info ]

print("; ".join(prices_for_printing))

相关问题 更多 >