python获取cmd输出并生成字典_python – 如何在使用生成器表达式时从字典列表中获取项的键...

在la上使用max并提供可调用键,以便获得time_diff值最高的整个字典.

>>> la = [{'app_name': 'MKV58YCF8RR','time_diff': 17647},

... {'app_name': 'ZXG68HYW4BA','time_diff': 18132}]

>>>

>>> max_d = max(la, key=lambda d: d['time_diff']) # dict with max time_diff

>>> print('{d[app_name]} is {d[time_diff]}'.format(d=max_d))

ZXG68HYW4BA is 18132

thank you, i don’t understand how lambda is working here if there is no loop to iterate entire list.

不要被lambda分心.它被用作选择la的最大值的标准,但我们也可以将其写为正常函数.

>>> def criterion(dictionary):

... return dictionary['time_diff']

...

>>> max(la, key=criterion)

{'app_name': 'ZXG68HYW4BA', 'time_diff': 18132}

max迭代la,使用la的每个元素调用标准,并返回标准最大的la元素.

can I extract it just like you did with lambda, while using itemgetter instead?

当然!

>>> import operator

>>> max_d = max(la, key=operator.itemgetter('time_diff'))

>>> print('{d[app_name]} is {d[time_diff]}'.format(d=max_d))

ZXG68HYW4BA is 18132

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关于 Python 的 `self` 关字: 在 Python ,`self` 是一个约定俗成的关字,通常作为类方法的第一个参数出现。它表示类的实例对象本身,可以用来访问实例变量和方法。在 Python ,不像其他语言使用 `this` 或 `self` 关字一样强制要求使用,但是为了代码的可读性和规范性,建议在类方法使用 `self`。 关于 Python 实现序遍历表达式二叉树,前缀、缀、后缀表达式生成表达式二叉树: 以下是一个示例代码,实现了序遍历表达式二叉树,前缀、缀、后缀表达式生成表达式二叉树的功能: ```python class TreeNode: def __init__(self, val): self.val = val self.left = None self.right = None class ExpressionTree: def __init__(self): self.root = None # 序遍历表达式二叉树 def inorder_traversal(self, node): if node.left: self.inorder_traversal(node.left) print(node.val, end=' ') if node.right: self.inorder_traversal(node.right) # 前缀表达式生成表达式二叉树 def build_from_prefix(self, expression): stack = [] for i in range(len(expression) - 1, -1, -1): if expression[i].isdigit(): node = TreeNode(expression[i]) stack.append(node) else: node = TreeNode(expression[i]) node.left = stack.pop() node.right = stack.pop() stack.append(node) self.root = stack.pop() # 表达式生成表达式二叉树 def build_from_infix(self, expression): stack = [] i = 0 while i < len(expression): if expression[i].isdigit(): j = i while j < len(expression) and expression[j].isdigit(): j += 1 node = TreeNode(expression[i:j]) stack.append(node) i = j elif expression[i] == '(': stack.append('(') i += 1 elif expression[i] == ')': while stack[-1] != '(': right = stack.pop() op = stack.pop() left = stack.pop() node = TreeNode(op) node.left = left node.right = right stack.append(node) stack.pop() # 弹出左括号 i += 1 else: while stack and stack[-1] != '(' and self.precedence(stack[-1]) >= self.precedence(expression[i]): right = stack.pop() op = stack.pop() left = stack.pop() node = TreeNode(op) node.left = left node.right = right stack.append(node) stack.append(expression[i]) i += 1 while len(stack) > 1: right = stack.pop() op = stack.pop() left = stack.pop() node = TreeNode(op) node.left = left node.right = right stack.append(node) self.root = stack.pop() # 后缀表达式生成表达式二叉树 def build_from_postfix(self, expression): stack = [] for c in expression: if c.isdigit(): node = TreeNode(c) stack.append(node) else: right = stack.pop() left = stack.pop() node = TreeNode(c) node.left = left node.right = right stack.append(node) self.root = stack.pop() # 返回操作符优先级 def precedence(self, op): if op == '+' or op == '-': return 1 elif op == '*' or op == '/': return 2 else: return 0 ``` 其,`TreeNode` 表示二叉树的节点,`ExpressionTree` 表示表达式二叉树。`build_from_prefix`、`build_from_infix`、`build_from_postfix` 分别表示通过前缀、缀、后缀表达式生成表达式二叉树的方法。`inorder_traversal` 表示序遍历表达式二叉树的方法。`precedence` 表示返回操作符优先级的方法。 示例代码使用了栈来辅助实现表达式树的构建,具体的实现方法可以参考代码的注释。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值