为了账号安全,请及时绑定邮箱和手机立即绑定

试图为 4x4 板坐标创建一个 python 字典

试图为 4x4 板坐标创建一个 python 字典

慕田峪4524236 2021-06-29 10:52:36
我想要所需的输出 -coord = {0: (0, 0), 1: (0, 1), 2: (0, 2), 3: (0, 3),4: (1, 0), 5: (1, 1), 6: (1, 2),7: (1, 3),8: (2, 0), 9: (2, 1), 10: (2, 2),11: (2, 3),12: (3, 0), 13: (3, 1), 14: (3, 2), 15: (3, 3)}使用coord = {}for i in range(0,16):    if i < 4:        for j in range (0,4):            coord[i] = (0,j)    elif   i > 3 and i <8:        for j in range (0,4):            coord[i] = (1,j)    elif i > 7 and i < 12:        for j in range (0,4):            coord[i] = (1,j)    elif i > 11 and i < 16:        for j in range (0,4):            coord[i] = (1,j)print (coord)得到输出为 {0: (0, 3), 1: (0, 3), 2: (0, 3), 3: (0, 3), 4: (1, 3), 5: (1, 3), 6: (1, 3), 7: (1, 3), 8: (1, 3), 9: (1, 3), 10: (1, 3), 11: (1, 3), 12: (1, 3), 13: (1, 3), 14: (1, 3), 15: (1, 3)}无法构建逻辑以获得所需的输出。
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

最直接的方法是使用嵌套的 for 循环。


k = 0

d = {}

for i in range(4):

     for j in range(4):

         d[k] = (i, j)

         k += 1

或者,如果您更喜欢 oneliners,则双重理解


 dict( enumerate ( [ (i, j) for i in range(4) for j in range(4)] )) 

要获得一个简单的 for 循环或推导式,我们可以使用整数算术运算符 //(整数除法)和 % 余数


 { k : (k // 4, k % 4) for k in range(16) }

这可能更优雅和快速


查看完整回答
反对 回复 2021-07-06
?
HUX布斯

TA贡献1876条经验 获得超6个赞

我们可以枚举整数的笛卡尔积itertools.product。


import itertools as it



{i: x for i, x in enumerate(it.product(range(3+1), repeat=2))}

# {0: (0, 0),

#  1: (0, 1),

#  2: (0, 2),

#  3: (0, 3),

#  ...

#  15: (3, 3)}


查看完整回答
反对 回复 2021-07-06
  • 2 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号