根据dict B python的值构建dict A.

时间:2015-07-19 08:36:06

标签: python dictionary

我有一个看起来类似的文本文件:

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]。 我可以想到直截了当的方法,但是有一种快速而有效的方法来实现它吗?

1 个答案:

答案 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'))