我已经拆分了“现在”列表,并将其转换为需要一次迭代的字典(名称:版本)。以后,可以在恒定时间内访问字典中的值以进行进一步的操作。
prev = { 'alpha:10.2': '145','teta:180': '198','eltira:140': '222','old:1. 43':'150'}
now = ['alpha:10.3','teta:180','eltira:142']
now_dict = {}
old = []
old_names = []
for items in now:
temp0,temp1 = items.split(':')
now_dict[temp0] = temp1
for k,v in prev.items():
name,version = k.split(':')
if name not in now_dict.keys():
old_names.append(name)
old.append(v)
continue
if version != now_dict[name]:
old.append(v)
continue
else:
continue
if __name__ == '__main__':
print(old_names)
print(old)
,
这是一种实现方法:
prev = { 'alpha:10.2': '145','zeta:12.1' : '334'}
now = ['alpha:10.3','eltira:142']
now_splited = [nk.split(":") for nk in now]
old = []
old_name = []
for k,v in prev.items():
if k not in new_key:
old_n,old_v = k.split(":")
name = any(map(lambda n : n[0] == old_n,now_splited))
version = any(map(lambda n : n[1] == old_v,now_splited))
if name and not version:
old.append(v)
elif not name:
old_name.append(old_n
old.append(old_v))
结果:
>>> print(old,old_name)
['145','222','334'] ['zeta']
,
您可以通过now
将map
放入operator.methodcaller
并将其包装在dict()
中来使splitter = operator.methodcaller('split',':')
now_dict,kv_map = dict(map(splitter,now)),map(splitter,prev)
old = [prev[':'.join((k,v))] for k,v in kv_map if k in now_dict]
old_names = [n for n,v in kv_map if n not in now_dict]
成为字典,然后使用与上一条相同的方法进行理解很容易:
#old
['145','198','222']
#old_names
[]
结果:
function GetYouTubeId($url)
{
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i',$url,$match);
$youtube_id = $match[1];
return $youtube_id;
}
本文链接:https://www.f2er.com/3143119.html