擅长:python、mysql、java
<p>如果文件中的通配符条目具有固定长度(例如,您只需要支持<code>0011*,allow</code>这样的行,而不需要<code>00110*,allow</code>或<code>0*,allow</code>或任何其他任意数量的数字后跟<code>*</code>),则可以使用嵌套字典,其中外键是通配符条目的已知部分。你知道吗</p>
<pre><code>d = {'0011': {'001180000': 'value', '001180001': 'value'}}
</code></pre>
<p>然后,当解析文件并到达第<code>0011*,allow</code>行时,不需要进行任何匹配。你所要做的就是检查<code>'0011'</code>是否存在。粗略的例子:</p>
<pre><code>d = {'0011': {'001180000': 'value', '001180001': 'value'}}
line = '0011*,allow'
prefix = line.split(',')[0][:-1]
if prefix in d:
# there is a "match", then you can deal with all the entries that match,
# in this case the items in the inner dictionary
# {'001180000': 'value', '001180001': 'value'}
print('match')
else:
print('no match')
</code></pre>
<p>如果您确实需要支持任意长度的通配符条目,您将不得不求助于循环遍历字典(因此不必从使用字典开始):</p>
<pre><code>d = {'001180000': 'value', '001180001': 'value'}
line = '0011*,allow'
prefix = line.split(',')[0][:-1]
for k, v in d.items():
if k.startswith(prefix):
# found matching key-value pair
print(k, v)
</code></pre>