다음과 같은 사전 목록이 있습니다.
[{'cvid': '642', 'switch': '015ABC003999FR', 'uni': '5'},
{'cvid': '523', 'switch': '017ABC001230FR', 'uni': '5'},
{'cvid': '43', 'switch': '017ABC001231FR', 'uni': '2'},
{'cvid': '45', 'switch': '500ABC005437FR', 'uni': '3'}]
또한 아래와 같은 값이 포함 된 목록이 있습니다.
[['000015ABC003999CIRC'], ['000017ABC001230CIRC'], ['000017ABC001231CIRC'], ['000015ABC000249CIRC'], ['000500ABC005437CIRC']]
{ 'switch': '015ABC003999FR'} 값에서 하위 문자열을 추출하고 값 000015ABC003999CIRC를 반환하여 { 'circ': '000015ABC003999CIRC'}와 동일한 사전에 추가하고 싶습니다.
나는 그 시나리오에 가까운 예를 찾을 수 없었다. 사전의 015ABC003999에 대한 정규식처럼 수행 한 다음 목록의 정규식에서도 일치시킬 수 있습니까? 또 다른 옵션은 앞쪽에 0을 추가하고 FR을 CIRC로 대체하는 값을 만드는 것이지만 일종의 확인으로 목록에 일치시키는 것이 좋습니다.
그런 다음 사전을 사용하여 아래와 같은 구성을 채 웁니다.
print('cfm service delete service ' + dic['switch'])
print('cfm mep create service ' + dic['circ'] + ' port ' + dic['uni'] + ' type up vlan ' + dic['cvid'] + ' mepid 3')
두 for 루프에서 둘 다 반복 할 수 있습니다. 다음을 switch
사용하여 하위 문자열을 확인하기 전에 값 의 마지막 두 문자를 제거해야하는 것처럼 보입니다 in
.
import json
data = [
{
"cvid": "642",
"switch": "015ABC003999FR",
"uni": "5"
},
{
"cvid": "523",
"switch": "017ABC001230FR",
"uni": "5"
},
{
"cvid": "43",
"switch": "017ABC001231FR",
"uni": "2"
},
{
"cvid": "45",
"switch": "500ABC005437FR",
"uni": "3"
}
]
lst = [['000015ABC003999CIRC'], ['000017ABC001230CIRC'], ['000017ABC001231CIRC'],
['000015ABC000249CIRC'], ['000500ABC005437CIRC']]
for d in data:
switch_val_without_last_2_ch = d["switch"][:-2]
for sub_lst in lst:
val = sub_lst[0]
if switch_val_without_last_2_ch in val:
d["circ"] = val
break
print(json.dumps(data, indent=2, sort_keys=False))
for dic in data:
print(f'cfm service delete service {dic["switch"]}')
print(f'cfm mep create service {dic["circ"]} port {dic["uni"]} type up vlan {dic["cvid"]} mepid 3')
산출:
[
{
"cvid": "642",
"switch": "015ABC003999FR",
"uni": "5",
"circ": "000015ABC003999CIRC"
},
{
"cvid": "523",
"switch": "017ABC001230FR",
"uni": "5",
"circ": "000017ABC001230CIRC"
},
{
"cvid": "43",
"switch": "017ABC001231FR",
"uni": "2",
"circ": "000017ABC001231CIRC"
},
{
"cvid": "45",
"switch": "500ABC005437FR",
"uni": "3",
"circ": "000500ABC005437CIRC"
}
]
cfm service delete service 015ABC003999FR
cfm mep create service 000015ABC003999CIRC port 5 type up vlan 642 mepid 3
cfm service delete service 017ABC001230FR
cfm mep create service 000017ABC001230CIRC port 5 type up vlan 523 mepid 3
cfm service delete service 017ABC001231FR
cfm mep create service 000017ABC001231CIRC port 2 type up vlan 43 mepid 3
cfm service delete service 500ABC005437FR
cfm mep create service 000500ABC005437CIRC port 3 type up vlan 45 mepid 3
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다