我有四个空列表和一个字典,如下所示:
argv1_a=[]
argv1_b=[]
argv2_a=[]
argv2_b=[]
dic={'1':['1','x','build'],'2':['x','8','demolish'],'3':['3','x','build'],'4':['6','10','demolish']}
还有一个代码块(它基本上将字典的值附加到列表中并将其类型更改为int):
for i in dic.values():
if i[2]=='build':
if i[0]!='x':
argv1_a.append(int(i[0]))
else:
argv1_a.append(i[0])
elif i[2]=='demolish':
if i[0]!='x':
argv1_b.append(int(i[0]))
else:
argv1_b.append(i[0])
for i in dic.values():
if i[2]=='build':
if i[1]!='x':
argv2_a.append(int(i[1]))
else:
argv2_a.append(i[1])
elif i[2]=='demolish':
if i[1]!='x':
argv2_b.append(int(i[1]))
else:
argv2_b.append(i[1])
这是列表的最终结果:
argv1_a=[1, 3]
argv1_b=['x', 6]
argv2_a=['x', 'x']
argv2_b=[8, 10]
有没有一种更好的方法,而无需编写相同的代码块且不使用第三方库?
答案 0 :(得分:1)
将值放入元组,并使用for
循环:
for (a, b, offset) in ((argv1_a, argv1_b, 0), (argv2_a, argv2_b, 1)):
for i in dic.values():
if i[2]=='build':
if i[offset]!='x':
a.append(int(i[offset]))
else:
a.append(i[offset])
elif i[2]=='demolish':
if i[offset]!='x':
b.append(int(i[offset]))
else:
b.append(i[offset])
答案 1 :(得分:0)
如果仅定义两个字典collider
和d1
,其中密钥d2
包含argv1_a / argv2_a,密钥build
包含argv1_b / argv2_b,则可以简化代码如下
demolish