python - 如何将我的 for 循环转换为字典理解?
问题描述
我是python的初学者。我面临一个问题,我只能通过使用通用 for 循环来解决。问题是
使用字典理解创建一个乘法表(最多 12 个)。键是“1 × 2”形式的字符串,值是两个数字的对应乘积。每个键中的第一个数字不能大于第二个数字。
table={}
for i in range(1,13):
for j in range(1,13):
if i<j:
product = i*j
phrase = 'x'.join([str(i),str(j)])
temp={(phrase,product)}
table.update(temp)
j+=1
i+=1
第二个是使用函数filter()
选择乘法表中因子之一为 11 或 12 的部分。显示过滤结果。但我只能选择键。我不知道如何显示表格中的所有项目。
def factorset(a):
return '12' in a or '11' in a
list(filter(factorset,table))
解决方案
从只是将您现有的代码翻译为 dict 理解,我得到
multiplication_table = {f'{i}x{j}': i*j for i in range(1,13) for j in range(i,13)}
要进行过滤,您需要做一些像这样棘手的事情。
dict(filter(lambda x: '11' in x[0] or '12' in x[0], multiplication_table.items()))
让我们分解这段代码,multiplication_table.items()
以元组的形式返回乘法表中所有项目的列表(例如[('1x12': 12), ... ]
)。
lambda x: '11' in x[0] or '12' in x[0]
如果字符串 11 或 12 包含在元组的第一个元素中,则匿名函数
返回 true。
过滤器将此函数应用于元组列表。
推荐阅读
- hook - wmcs 电话验证挂钩
- php - Laravel Blade:访问包含文件中的变量返回未定义
- html - 提供消息内容的网站必须包含地标错误
- python-3.7 - 有没有办法只将递归的最后两个保存值保留在字典中并删除其余的?
- scala - 检查镶木地板scala spark上是否存在嵌套数据?
- rest - 对象列表的 API 命名约定
- java - 在 Java 中将 JSON 转换为镶木地板
- javascript - 如何使用 ReactJS 在 CKEditor 5 中配置上传适配器?
- azure - 为什么 ADAL 令牌返回的令牌在 Postman 发出的请求中显示未经授权,我该如何解决?
- javascript - 异步代码的父子组件之间的componentDidMount顺序