我有一个看起来类似的文本文件:
mode1=1,2,3,4
mode2=5,3,6,8
mode3=a,t,5,6
etc.
**END MODES**
group1=mod1,mode2
group2=group1,mode3
etc.
**END_GROUPS**
我构建了一个字典模式,其中键是模式。 代码看起来像这样:
for line in mode_def_file:
if "**END_MODES**" in line:
break
k, v = line.strip().split('=')
modes_dict[k] = v.split(',')
现在构建组dict,因为值是group_dict或modes_dict的键
我想group_dict[group2] = [1,2,3,4,5,3,6,8,a,t,5,6]
。
我可以想到直截了当的方法,但是有一种快速而有效的方法来实现它吗?
答案 0 :(得分:1)
在这里使用单行可能有很大的潜力,但我能想到的最干净,最易维护的如下。它应该非常接近最有效率,因为您无论如何都必须进行第二次检查以查看您获得的value
是否可以再次扩展(您知道,以防'group1'
)。无论如何,这可能与你直截了当的解决方案没有什么不同。
def generate(dictionary, query):
result = []
queryItems = query.split(',')
# Traverse dictionary keys
for i in queryItems:
# Traverse dictionary values
for j in dictionary[i].split(','):
# If the value exists as a key in the dictionary expand it, if not take it as-is
result.extend(dictionary[j].split(',') if j in dictionary else j)
return result
dict = { 'mode1':'1,2,3,4', 'mode2':'5,3,6,8', 'group1':'mode1,mode2' }
print(generate(dict, 'mode1,mode2,group1'))