
1 Muninn 2014 年 5 月 14 日 不太理解 |
3 zedde OP 1-20 类似{1:{2:3, 4:5}, 6:{7:8, 9:10}, 11:{12:13, 14:15}, 16:{17:18, 19:20}} |
4 fdsfsdfsdf3334 2014 年 5 月 15 日 # coding=utf-8 t={} #初始化字典 for x in range(1,21): if x%5==1: print x t[x]="{"+str(x+1)+":"+str(x+2)+","+str(x+3)+":"+str(x+4)+"}" t1= sorted(t.iteritems(), key=lambda d:d[0], reverse = False) #按照键值排序 print t1 |
5 fdsfsdfsdf3334 2014 年 5 月 15 日 |
6 fdsfsdfsdf3334 2014 年 5 月 15 日 好像有点问题,你看看能不能用 |
7 fdsfsdfsdf3334 2014 年 5 月 15 日 print "---------------------------------------------\n\r" print "t:\n\r" print t print t[1] print "---------------------------------------------\n\r" print "t1:\n\r" print t1 print t1[0][1] |
8 kxxoling 2014 年 5 月 15 日 我理解你是想通过一个list获取这样的dict,list的长度要能被5整除。 ``` l = range(1, 21) assert len(l)%5 == 0 d = {} for i in range(0, len(l), 5): d[l[i]] = {l[i+1]: l[i+2], l[i+3]: l[i+4]} print d ``` |
9 delo 2014 年 5 月 15 日 |
10 kxxoling 2014 年 5 月 15 日 额,v2ex不支持这么加代码。。。不过逻辑不复杂,我就不用gist了,讲究看看吧~ |
11 palytoxin 2014 年 5 月 15 日 via iPhone 这不是和女神合租的rubyer么,没认错吧 |
12 cbsw 2014 年 5 月 15 日 一行代码而已 {k:{k+1:k+2, k+3:k+4} for k in [5*i+1 for i in range(4)]} 如果要写成函数,就把最后一个 4 作为参数 |
13 kavinyao 2014 年 5 月 15 日 In [13]: {i: {j:j+1 for j in [i+1, i+3]} for i in range(1, 20, 5)} Out[13]: {1: {2: 3, 4: 5}, 6: {7: 8, 9: 10}, 11: {12: 13, 14: 15}, 16: {17: 18, 19: 20}} |
14 daniel7725 2014 年 5 月 15 日 ``` def test(num): if num <5: return None targe = {} for i in xrange(1,num,5): tmp_dict = {str(i):{str(i+1):str(i+2),str(i+3):str(i+4)}} targe.update(tmp_dict) return targe |
15 daniel7725 2014 年 5 月 15 日 看看v2ex支不支持markdown ``` def test(num): if num <5: return None targe = {} for i in xrange(1,num,5): tmp_dict = {str(i):{str(i+1):str(i+2),str(i+3):str(i+4)}} targe.update(tmp_dict) return targe ``` |
16 wangyongbo 2014 年 5 月 15 日 { x : { x + 1 :x+ 2, x+ 3: x+ 4} for x in range(1, 20, 5)} |
17 wangyongbo 2014 年 5 月 15 日 { x : { i : i + 1 for i in xrange(x+1, x+4, 2)} for x in range(1, 20, 5)} |
18 toctan 2014 年 5 月 15 日 Ruby: (1..20).step(5).reduce({}) { |r, x| r.merge(x => Hash[*(x + 1..x + 4)]) } or the lazy way: Hash.new { |h, k| h[k] = Hash[*(k + 1..k + 4)]) } |
19 hanks315 2014 年 5 月 15 日 |
20 foomorrow 2014 年 5 月 15 日 n = 2 dict(map(lambda x:(x,dict(((x+1,x+2),(x+3,x+4)))),[x+1 for x in xrange(0,n*10,5)])) |