我有以下字典:
student_loan_portfolio = {
'loan1': {'rate': .078, 'balance': 1000, 'payment': 100, 'prepayment': 0},
'loan2': {'rate': .0645, 'balance': 10, 'payment': 5, 'prepayment': 0},
'loan3': {'rate': .0871, 'balance': 250, 'payment': 60, 'prepayment': 0},
'loan4': {'rate': .0842, 'balance': 200, 'payment': 37, 'prepayment': 0},
'loan5': {'rate': .054, 'balance': 409, 'payment': 49, 'prepayment': 0},
'loan6': {'rate': .055, 'balance': 350, 'payment': 50, 'prepayment': 0}
}
Run Code Online (Sandbox Code Playgroud)
我想按照包含在其各自嵌套字典中具有最高'rate'值的字典的键的顺序遍历包含字典(使用keys loan1到loan6).也就是说,我想按贷款3,贷款4,贷款1,贷款2,贷款6,贷款5的顺序进行迭代
感谢@Jame Sharp最简单的方法,我知道:
for k,v in sorted(student_loan_portfolio.items(), key=lambda (k,v): v['rate'], reverse=True):
Run Code Online (Sandbox Code Playgroud)
我现在正在阅读关于lambda的内容,并不能确切地理解它是如何以及为什么这样做的.首先,v ['rate']我相信是返回那些字典键的值.但它似乎应该是某种语法错误.什么是v ['rate']引用,语法背后的逻辑是什么?
在相关的说明中,为什么,我们是否必须将lambda函数的输入指定为元组?
以下情况有何不同?
#1
>>>f = lambda …Run Code Online (Sandbox Code Playgroud) 我最近在这个论坛上听到它之后安装了IPython.我正在寻找一个类似于MATLAB或RStudio for R的环境.
我的印象是IPython会给我这个,但我为Windows下载的版本看起来非常简单.实际上我并没有真正看到IDLE和IPython之间的区别,除了标签完成和历史记录(我一直想要的),但这与R一起提供的解释器差不多,我以前认为这很难解决.
我误解了IPython的观点吗?或者我可能没有正确安装?
我还下载了"控制台",虽然我不相信它工作正常,但它看起来也很光.
科莫多看起来不错,但有些昂贵.Netbeans和Eclipse也看起来不错,但是安装起来似乎并不简单,至少对于那些具有我的知识水平的人来说,所以如果有人能够验证它们与Python的兼容性,功能和非易用性,这将是一件好事. - 专家用户.
我是一个初学python程序员,但已编写了几个脚本,其中包括我定义自己的函数并使用它们的脚本.我似乎无法在IDLE中使用任何用户定义的函数.想知道我是不是疯了/笨.有人可以解释一下以下结果吗?谢谢:
def f(x,y):
solution = x+y
return solution
f(2,2)
SyntaxError: invalid syntax
>>> a = f(2,2)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
a = f(2,2)
NameError: name 'f' is not defined
Run Code Online (Sandbox Code Playgroud)
def g(x):
solution = x + 2
return solution
g(2)
SyntaxError: invalid syntax
>>> a = g(2)
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
a = g(2)
NameError: name 'g' is not defined
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法将指标功能应用于列表?即我有一个包含一些数字的列表,我想返回另一个相同大小的列表,例如,正数列在原始列表中的那些列和负数在原始列表中的零.
下面的代码返回一个数组.我想在电子表格中使用它作为excel公式来返回数组.但是,当我这样做时,它只返回第一个值到单元格.无论如何返回数组在与数组相同大小的范围内?
Function LoadNumbers(Low As Long, High As Long) As Long()
'''''''''''''''''''''''''''''''''''''''
' Returns an array of Longs, containing
' the numbers from Low to High. The
' number of elements in the returned
' array will vary depending on the
' values of Low and High.
''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''
' Declare ResultArray as a dynamic array
' to be resized based on the values of
' Low and High.
'''''''''''''''''''''''''''''''''''''''''
Dim ResultArray() As Long
Dim Ndx As Long
Dim Val As …Run Code Online (Sandbox Code Playgroud) 我在下面用构造函数构建了一个类.这个想法是,如果没有指定等级和/或套装,默认情况下应该随机生成一个PlayingCard对象.如果指定了无效的套装或等级,则不应创建对象.我相信这是有效的,但我不知道该怎么做的例外.我想验证在无效等级或套装的情况下抛出的唯一例外是我指定的那个.我很困惑,为什么有一个'NameError'表示实例没有属性'suit',因为我在编写raise语句时没有指定它.
此外,我想使类灵活,以便在创建实例时不需要将用户定义的等级和套装作为字符串传递,但我似乎无法使其工作.如果有人能指出我正确的方向或解释为什么我不想这样做,我们将不胜感激.
class PlayingCard:
ranks = ['2','3','4','5','6','7','8','9','10','J','Q','K','A']
suits = ['Spades', 'Hearts', 'Clubs', 'Diamonds']
def __init__(self, rank = None, suit = None):
if rank is None: self.rank = PlayingCard.ranks[rand.randint(0,12)]
elif rank in PlayingCard.ranks: self.rank = rank
if suit is None: self.suit = PlayingCard.suits[rand.randint(0,3)]
elif suit in PlayingCard.suits: self.suit = suit
if self.rank not in PlayingCard.ranks or self.suit not in PlayingCard.suits: raise NameError('Invalid Suit or Rank')
>>> c1 = PlayingCard('15','Diamonds')
Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
c1 …Run Code Online (Sandbox Code Playgroud)