How to append characters to a string being used as a python dictionary key (when there are multiple entries related to that string)?
<p>I am pulling out sequence coordinates from the output file produced by HMMER (finds DNA sequences, matching a query, in a genome assembly file).</p>

<p>I create a python dictionary where the key is the source sequence name (a string), and the value is a list comprising the start and end coordinates of the target sequence. However, HMMER often finds multiple matches on a single source sequence (contig/chromosome).</p>

<p>This means that as I add to the dictionary, if I come across multiple matches on a contig, each is overwritten by the following match.</p>

<p>E.g. HMMER finds the following matches:</p>

<blockquote>
  <p>Name    Start    End</p>
  
  <p>4415    16723    17556</p>
  
  <p>127    1290    1145</p>
  
  <p>1263    34900    37834</p>
  
  <p>4415    2073    3899</p>
  
  <p>4415    4580    6004</p>
</blockquote>

<p>But this results in the following dictionary (I want separate entries for each match):</p>

<blockquote>
  <p>{'127': ['1290', '1145'], '1263': ['34900', '37834'], '4415': ['4580', '6004']}</p>
</blockquote>

<p>How can I append a letter to the key so that subsequent matches are unique and do not overwrite the previous ones, i.e. 4415, 4415a, 4415b, and so on?</p>

<pre><code>matches = {}

for each line of HMMER file:
    split the line
    make a list of fields 4 &amp; 5 (the coordinates)
    # at this stage I need a way of checking whether the key (sequenceName)
    # is already in the dictionary (easy), and if it is, appending a letter
    # to sequenceName to make it unique
    matches[sequenceName] = list
</code></pre>

<p>You can do something like this:</p>

<pre><code>matches = {'127': ['1290', '1145'], '1263': ['34900', '37834'], '4415': ['4580', '6004']}

# sample key_name
key_name = '4415'
if key_name in matches.keys():
    for i in xrange(1,26):
        if key_name+chr(ord('a') + i) not in matches.keys():
                matches[key_name+chr(ord('a') + i)] = #your value
</code></pre>

<p>This will increment your key_names as 4415a, 4415b...</p>

python dictionary key unique