我有一个项目列表,例如
item_list = ['char_model_..._main', 'char_model_..._main_default', 'char_rig_..._main', 'char_rig_..._main_default', 'char_acc__..._main']
虽然我能够从列表中获得我想要的某些东西,但我将其编码如下(不是非常有尊严地,但它给了我反馈):
item_wanted=[]
for item in item_list:
if item.startswith("char_model") and (item.endswith("main") or item.endswith("main_default")):
item_wanted.append(item)
因此,虽然我能够获得我想要的项目,现在my item_wanted
列表包含'char_model_..._main', 'char_model_..._main_default'
,但我应如何对其进行编码,以便在'main'
存在时使用它,否则使用{ {1}}?
答案 0 :(得分:0)
if item.startswith("char_model") :
if item.endswith("main"):
#do your thing if its "char_model...main"
elif item.endswith("main_default):
#do your thing if its "char_model...main"
希望这会有所帮助
答案 1 :(得分:0)
将有效的项目拆分为包含默认的项目和不包含的项目。之后,迭代执行结束默认的那些并尝试在另一个列表中找到相同的键(删除当然结束)。如果不存在,则意味着我们必须使用默认值,如果是,我们将其保留原样。
item_wanted = []
item_default = []
for item in item_list:
if item.startswith("char_model"):
if item.endswith("main_default"):
item_default.append(item)
elif item.endswith("main"):
item_wanted.append(item)
for potential in item_default:
if potential[:-8] not in item_wanted: #Look for the key without default
item_wanted.append(potential) #Append it if not present
答案 2 :(得分:0)
我的方法是只使用两个变量和一个关于输入列表的迭代。它能够在输入中处理多个“good”和“best”匹配。为简化起见,我使用了数字列表,对于main
和main_default
部分,我过去更喜欢1到2。
代码:
def match(items):
found1 = None
found2 = None
for i in items:
if (i==1):
found1 = i
elif (i==2):
found2 = i
return found1 or found2
print (match([2,1]))
print (match([3,2]))
print (match([4,3]))
输出:
1
2
None
看到这个