gpt4 book ai didi

python - "OrderedDict()"使用OrderedDict()时自己打印

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:37 24 4
gpt4 key购买 nike

我正在尝试使用 OrderedDict 打印有序字典,但是当我打印它时,“OrderedDict”也会打印出来。仅供引用,这只是一个代码段,而不是整个代码。我该怎么做才能解决这个问题?我正在使用 Python 3.2

看起来像这样:

def returnAllStats(ints):
choices = ["Yes","No"]
dictInfo = {"Calories":ints[2], "Servings per Container":ints[0], "Amount per Serving":ints[1], "Total Fat":(ints[3]/100)*ints[2], "Saturated Fat":(ints[4]/100)*(ints[3]/100)*ints[2], "Cholesterol":ints[5], "Fiber":ints[6], "Sugar":ints[7], "Protein":ints[8], "Sodium":ints[9], "USA":choices[ints[10]], "Caffeine":ints[11]}
dictInfo = collections.OrderedDict(dictInfo)
return dictInfo

我在写入的文本文件中得到了这个:

('snack', 'bananana')OrderedDict([('USA', 'No'), ('Sodium', 119), ('Calories', 479), ('Servings per Container', 7), ('Sugar', 49), ('Saturated Fat', 37.553599999999996), ('Total Fat', 234.71), ('Cholesterol', 87), ('Amount per Serving', 40), ('Fiber', 1), ('Caffeine', 7), ('Protein', 53)])

谢谢!

最佳答案

您有多种选择。

您可以使用列表理解并打印:

>>> od
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
>>> [(k,v) for k,v in od.items()]
[('one', 1), ('two', 2), ('three', 3)]

或者,知道顺序可能会改变,如果您想要输出,您可以直接转换为字典:

>>> dict(od)
{'one': 1, 'two': 2, 'three': 3}

(对于 Python 3.6,常规 dict does maintain order 。使用 Python 3.6 并且顺序不会改变。将来可能会出现这种情况,但还不能保证。)

最后,您可以子类化 OrderDict 并将 __str__ 方法替换为您想要的格式:

class Mydict(OrderedDict):
def __str__(self):
return ''.join([str((k, v)) for k,v in self.items()])

>>> md=Mydict([('one', 1), ('two', 2), ('three', 3)])
>>> md # repr
Mydict([('one', 1), ('two', 2), ('three', 3)])
>>> print(md)
('one', '1')('two', '2')('three', '3')

(如果您希望 repr 的输出不同,请更改 __repr__ 方法...)


最后的说明:

有了这个:

def returnAllStats(ints):
choices = ["Yes","No"]
dictInfo = {"Calories":ints[2], "Servings per Container":ints[0], "Amount per Serving":ints[1], "Total Fat":(ints[3]/100)*ints[2], "Saturated Fat":(ints[4]/100)*(ints[3]/100)*ints[2], "Cholesterol":ints[5], "Fiber":ints[6], "Sugar":ints[7], "Protein":ints[8], "Sodium":ints[9], "USA":choices[ints[10]], "Caffeine":ints[11]}
dictInfo = collections.OrderedDict(dictInfo)
return dictInfo

你实际上得到了一个 UNORDERED dict 结果,因为你是从一个无序的 dict 文字创建 OrderedDict 的。

你会想这样做:

def returnAllStats(ints):
choices = ["Yes","No"]
return collections.OrderedDict([("Calories",ints[2]), ("Servings per Container",ints[0]), ("Amount per Serving",ints[1]), ("Total Fat",(ints[3]/100)*ints[2]), ("Saturated Fat",(ints[4]/100)*(ints[3]/100)*ints[2]), ("Cholesterol",ints[5]), ("Fiber",ints[6]), ("Sugar",ints[7]), ("Protein",ints[8]), ("Sodium",ints[9]), ("USA",choices[ints[10]]), ("Caffeine",ints[11])]}
return dictInfo

关于python - "OrderedDict()"使用OrderedDict()时自己打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44312980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com