【发布时间】:2021-11-20 16:31:36
【问题描述】:
给定一个列表
[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
我想在每个列表位置标记如下
['fir', 'fir', 'sec', 'fir', 'fir', 'fir', 'thr', 'sec', 'fou', 'fou', 'fou', 'thr', 'sec', 'fou']
关于查找字典m
m={ "fir": [0,1,3,4,5],
"sec": [2,7,12],
"thr": [6,11],
"fou": [8,9,10,13]}
以前三个位置为例。
从字典m,位置0 和1 属于键fir。而第三个位置(例如 2)在键 sec 下。
因此,这三个的列表是 ['fir', 'fir', 'sec']。
为实现上述目标,特拟如下
m={ "fir": [0,1,3,4,5],
"sec": [2,7,12],
"thr": [6,11],
"fou": [8,9,10,13]}
all_key=m.keys()
all_opt=[]
for idx in range (sum(len(v) for v in m.values())):
for nkey in all_key:
if idx in m[nkey]:
all_opt.append(nkey)
break
生产的
opt=['fir', 'fir', 'sec', 'fir', 'fir', 'fir', 'thr', 'sec', 'fou', 'fou', 'fou', 'thr', 'sec', 'fou']
我想知道是否有比嵌套 for 循环更好的替代方案?
【问题讨论】:
-
整体上反转
m以将索引号映射到单词,然后使用它可能会更有效。
标签: python performance dictionary