我有一个GetFunds函数,它返回一个字典。看起来像这样:
[{“ currency”:“ BTC”,“ available”:0.460594115839, “保留”:0.0}]
在我看来,这就像是一本字典的清单。我想在列表中增加更多词典。所以我尝试这段代码:
funds=GetFunds(1, "BTC")
funds=funds+(GetFunds(2, "BTC"))
funds=funds + GetFunds(1, "DIVI")
funds=funds + GetFunds(2, "DIVI")
print(funds)
结果是列表列表(我认为)
[{ “ currency”:“ BTC”, “可用”:0.460594115839, “保留”:0.0}] [{ “ currency”:“ BTC”, “可用”:0.460594115839, “保留”:0.0}] [{ “ currency”:“ BTC”, “可用”:2.002708880342, “保留”:0.449841884826}] [{ “ currency”:“ DIVI”, “可用”:6966346.17416024, “保留”:0.0}] [{ “ currency”:“ DIVI”, “可用”:6285691.0243108, “保留”:795457.15508981}]
但是我想我想要一个包含4个元素的列表,每个元素都是一本字典....单套方括号
我尝试仅使用'+',我尝试了.append,但我想这只是针对字符串
如上所示
我想要一个包含多个词典的列表。
答案 0 :(得分:1)
这是因为存在字符串,因此请使用json.loads
:
import json
funds=json.loads(GetFunds(1, "BTC"))
funds=funds + json.loads(GetFunds(2, "BTC"))
funds=funds + json.loads(GetFunds(1, "DIVI"))
funds=funds + json.loads(GetFunds(2, "DIVI"))
print(funds)
使用ast.literal_eval
,建议少一点:
import ast
funds=ast.literal_eval(GetFunds(1, "BTC"))
funds=funds + ast.literal_eval(GetFunds(2, "BTC"))
funds=funds + ast.literal_eval(GetFunds(1, "DIVI"))
funds=funds + ast.literal_eval(GetFunds(2, "DIVI"))
print(funds)
答案 1 :(得分:0)
如果结果是列表,它应该可以工作:
a = {'a' : 1, 'b' : 2}
b = {'c' : 3, 'd' : 4}
aa = [a]
aa.extend([b])
aa
结果:
[{'b': 2, 'a': 1}, {'c': 3, 'd': 4}]
所以:
funds=GetFunds(1, "BTC")
funds.extend((GetFunds(2, "BTC")))
应该工作。
否则,请检查它是否实际上是一个列表(似乎是列表)。
type(aa)
<class 'list'>
答案 2 :(得分:0)
我没有足够的声誉来发表评论,所以我发布了答案。
很明显,GetFunds通过查看您发布的第二个片段来返回字符串。没错,当您看到类似[{key:value}]的内容时,我的第一个冲动就是“这是一个字典的列表”。但是,在第二个代码段中,您会遇到类似[{key:value}] [{key:value}]的内容。这显然不是字典列表或字典列表的列表。词典列表看起来像[{{k:v},{k:v}]],而列表列表看起来像是[[{{k:v}],[{k:v}]]。这告诉我,当您以为要向列表中添加元素时,实际上是在串联两个字符串(它们之间恰好有字符使它看起来像一个列表,很可能与JSON一起使用)。请注意,方括号的前后是如何排列的。