Geo*_*ina 4 python dictionary list permutation python-itertools
我需要一种更快的方法来生成列表的所有排列,然后检查每个排列是否在字典中.
for x in range (max_combo_len, 0, -1):
possible_combos = []
permutations = list(itertools.permutations(bag,x))
for item in permutations:
possible_combos.append(" ".join(item))
#then check to see if each possible combo is in a specific Dict
Run Code Online (Sandbox Code Playgroud)
如果有帮助,列表都将成为字符串列表.['比如','this','one']
我的解决方案有效,但速度很慢.可能是我需要停止使用Python,但我想我会先由你的专家运行它!
最好,加里
一个非常基本的优化:
permutations = list(itertools.permutations(bag,x))
for item in permutations:
Run Code Online (Sandbox Code Playgroud)
可以变成...
for item in itertools.permutations(bag,x):
Run Code Online (Sandbox Code Playgroud)
如果没有更好的输入情况,我无法很好地测试它,但这里有一些改进:
for x in xrange(max_combo_len, 0, -1):
possible_combos = (" ".join(item) for item in itertools.permutations(bag,x))
#then check to see if each possible combo is in a specific Dict
combos = (c for c in possible_combos if c in specific_dict)
Run Code Online (Sandbox Code Playgroud)
首先,假设您使用的是 Python 2.x,xrange则无需构建显式列表,而是根据x需要生成每个列表,这将有所帮助。
更重要的是,您可以将主要精力投入到生成器表达式中,并让它按需生成值。
| 归档时间: |
|
| 查看次数: |
4727 次 |
| 最近记录: |