Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从字典创建一个好的多项式表示_Python_Python 2.7_Dictionary - Fatal编程技术网

在python中从字典创建一个好的多项式表示

在python中从字典创建一个好的多项式表示,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,我试图在python中翻译多项式({4:5,6:7100:10}),以得到一个干净的 [out]: 10*X^100 + 7*X^6 + 5*X^4 一串 因此,字典的第一个条目与X的指数匹配,第二个条目与它的系数匹配,总是从最小的指数上升到最高的指数。为了了解这种情况,我试着反复浏览字典,发现输出并不是我所期望的 例如,如果我像上面那样设置字典dictionary={4:5,6:7100:10} 我用类似的方式进行打印 for exponent in dictionary: prin

我试图在python中翻译
多项式({4:5,6:7100:10})
,以得到一个干净的

[out]: 10*X^100 + 7*X^6 + 5*X^4
一串

因此,字典的第一个条目与
X
的指数匹配,第二个条目与它的系数匹配,总是从最小的指数上升到最高的指数。为了了解这种情况,我试着反复浏览字典,发现输出并不是我所期望的

例如,如果我像上面那样设置字典
dictionary={4:5,6:7100:10}
我用类似的方式进行打印

for exponent in dictionary:
    print exponent
我得到输出100,4,6。这对我来说不是很直观。然而,我研究了
操作员
模块以及该网站上的一些类似问题,并得出了以下代码

import operator
类多项式(对象):
def uuu init uuu(self,polynom={}):
self.polynom=多项式
self.poly\u string=self.nicePolynom(polynom)

这基本上就是我想要的。然而,我不知道如何使它配合在一起。我当前的输出(由代码中的基本print语句引起)是


当然还有返回语句,它的计算结果是5*X^4。我确实希望上面的输出都在一行中,并且它们之间有一个“+”,就像上面的输出示例一样。但是,如果不编写非常难看的代码(比上面的代码更难看),我就无法完成这项工作

我不知道您使用什么库来获取多项式对象,但假设它是一个包含所有常规方法的子类dict,并且我理解您的意思,我相信您正在尝试这样做:

>>> d = {4:5, 6:7, 100:10}
>>> ' + '.join(('%s*x^%s' % (c, e) for e, c in d.items()))
'10*x^100 + 5*x^4 + 7*x^6'
为你把它分解一下:

  • d.items()
    返回dict d的
    (键、值)
    元组列表
  • “%s*x^%s%”(c,e)
    格式化元组:c*x^e[c=系数,e=指数]
  • “+”。join(…)
    将所有内容放在一起,中间带有加号

请注意,一如既往,Python中不保证dict顺序。如果您希望这些对象以标准形式出现,则需要进行某种排序。

我不知道您使用什么库来获取多项式对象,但假设它是一个包含所有常规方法的子类dict,并且我理解您的意思,我相信您正在尝试这样做:

>>> d = {4:5, 6:7, 100:10}
>>> ' + '.join(('%s*x^%s' % (c, e) for e, c in d.items()))
'10*x^100 + 5*x^4 + 7*x^6'
为你把它分解一下:

  • d.items()
    返回dict d的
    (键、值)
    元组列表
  • “%s*x^%s%”(c,e)
    格式化元组:c*x^e[c=系数,e=指数]
  • “+”。join(…)
    将所有内容放在一起,中间带有加号

请注意,一如既往,Python中不保证dict顺序。如果您希望这些对象以标准形式出现,则需要进行某种排序。

我不知道您使用什么库来获取多项式对象,但假设它是一个包含所有常规方法的子类dict,并且我理解您的意思,我相信您正在尝试这样做:

>>> d = {4:5, 6:7, 100:10}
>>> ' + '.join(('%s*x^%s' % (c, e) for e, c in d.items()))
'10*x^100 + 5*x^4 + 7*x^6'
为你把它分解一下:

  • d.items()
    返回dict d的
    (键、值)
    元组列表
  • “%s*x^%s%”(c,e)
    格式化元组:c*x^e[c=系数,e=指数]
  • “+”。join(…)
    将所有内容放在一起,中间带有加号

请注意,一如既往,Python中不保证dict顺序。如果您希望这些对象以标准形式出现,则需要进行某种排序。

我不知道您使用什么库来获取多项式对象,但假设它是一个包含所有常规方法的子类dict,并且我理解您的意思,我相信您正在尝试这样做:

>>> d = {4:5, 6:7, 100:10}
>>> ' + '.join(('%s*x^%s' % (c, e) for e, c in d.items()))
'10*x^100 + 5*x^4 + 7*x^6'
为你把它分解一下:

  • d.items()
    返回dict d的
    (键、值)
    元组列表
  • “%s*x^%s%”(c,e)
    格式化元组:c*x^e[c=系数,e=指数]
  • “+”。join(…)
    将所有内容放在一起,中间带有加号

请注意,一如既往,Python中不保证dict顺序。如果您希望这些文件以标准形式存在,则需要进行某种排序。

如果您希望它非常简短:

class Polynomial(dict):

    def __str__(self):
        return ' + '.join("{}*X^{}".format(self[exp], exp) 
                          for exp in sorted(self, reverse=True))


>>> print Polynomial({4:5,6:7,100:10})
'10*X^100 + 7*X^6 + 5*X^4'

如果你喜欢它很短:

class Polynomial(dict):

    def __str__(self):
        return ' + '.join("{}*X^{}".format(self[exp], exp) 
                          for exp in sorted(self, reverse=True))


>>> print Polynomial({4:5,6:7,100:10})
'10*X^100 + 7*X^6 + 5*X^4'

如果你喜欢它很短:

class Polynomial(dict):

    def __str__(self):
        return ' + '.join("{}*X^{}".format(self[exp], exp) 
                          for exp in sorted(self, reverse=True))


>>> print Polynomial({4:5,6:7,100:10})
'10*X^100 + 7*X^6 + 5*X^4'

如果你喜欢它很短:

class Polynomial(dict):

    def __str__(self):
        return ' + '.join("{}*X^{}".format(self[exp], exp) 
                          for exp in sorted(self, reverse=True))


>>> print Polynomial({4:5,6:7,100:10})
'10*X^100 + 7*X^6 + 5*X^4'