Thanks! This example is quite simple and works exactly the way I wanted.<br><br><div class="gmail_quote">On Thu, Feb 19, 2009 at 11:39 PM, MRAB <span dir="ltr"><<a href="mailto:google@mrabarnett.plus.com">google@mrabarnett.plus.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="Wj3C7c">Alex Gusarov wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello everybody!<br>
<br>
I've a list of dictionaries with 'shorcut' and 'command' keys. When user types a word program must search this list for a typed shortcut and then run linked command. What I've wrote:<br>
<br>
        for cmd in self.commands:<br>
            if cmd['shortcut'] == input:<br>
                os.popen(cmd['command'])<br>
                break<br>
        else:<br>
            os.popen(input)<br>
<br>
But it's a brute-force method and I think there is another way in searching items through a list by dictionary key. Please give me advice how can I implement fast search in list of dictionaries by some dictionary key. In my mind language:<br>

<br>
list.get({'shortcut' == input})<br>
<br>
</blockquote></div></div>
If want to go from the shortcut to the command (cmd['shortcut'] -><br>
cmd['command']) the quickest way is using a dict, where cmd['shortcut']<br>
is the key and cmd['command'] is the value:<br>
<br>
    self.command_dict = {}<div class="Ih2E3d"><br>
    for cmd in self.commands:<br></div>
        self.command_dict[cmd['shortcut']] = cmd['command']<br>
<br>
and then:<br>
<br>
    os.popen(self.command_dict[input])<br>
<br>
This will raise a KeyError if it's unknown. The equivalent of your code<br>
above is:<br>
<br>
    os.popen(self.command_dict.get(input, input))<br><font color="#888888">
--<br>
<a href="http://mail.python.org/mailman/listinfo/python-list" target="_blank">http://mail.python.org/mailman/listinfo/python-list</a><br>
</font></blockquote></div><br>