作者KSJ (阿真)
看板Python
标题Re: [问题] 请问一个dict取值问题
时间Fri Mar 9 12:27:02 2012
※ 引述《kadodo (想办法突破)》之铭言:
: A = ['7', '15', '18']
: B = OrderedDict([(1, 'apple'), (4, 'water'), (9, 'soap'),
: (10, 'sugar'), (12, 'rice'), (13, 'baby'),
: (14, 'boy'), (20, 'girl')])
: 请问要如何得到一个 dict (C) 的结果是
: C = {}
: C = {'7':'water', '15':'boy', '18':'boy'}
: 也就是说
: 4 < 7 < 9 ==> '7':'water' (B['4'])
: 14 < 15 < 20 ==> '15':'boy' (B['14'])
: 14 < 18 < 20 ==> '18':'boy' (B['14'])
: 要怎麽写一个可以处理任意A或任意B 我都可以得到一个C的CODE呢?
: 请各位提供意见 感谢~~
B不是用整数当key吗??@@a 上面写是用字串
C={}
for a in A:
for idx,b in enumerate(B):
if b.key > int(a):
C[a] = B[idx-1].value
break
以上是个概念
orderdict 看起来是可以排序KEY的dict 所以我猜找它前一个key的值应该是可以的
所以找第一个超过a值的b的index 再写入前一个index的b值 然後再找下一个a
如果不行用index的话 可以记录 前一笔小於 後一笔大於的时候再填入前一笔的值
如果我有什麽误解再跟我说 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.63.202