I have a `dict`, like so:

```
IdSet = {
    u'abcd_def_99': [u'Scenario: forth Scenario'],
    u'abcd_def_10': [u'Scenario: eleventh Scenario'],
    u'abcd_def_100': [u'Scenario: second Scenario'],
    u'abcd_def_101': [u'Scenario: ninth Scenario'],
    u'abcd_def_46': [u'Scenario: tenth Scenario', u'Scenario: third Scenario', u'Scenario: fifth Scenario'],
}

```

I'd like to reassemble the list in ascending order by the number (digits) only (but still keeping the entire `referenceId`, and the value):

```
10
46
99
100
101

```

The problem is, `sorted(IdSet)` doesn't assemble in the order I'd like, however like so:

```
10
100
101
46
99

```

The sorted method is not working the way I want it to, so my code must be wrong somewhere. I did think about filtering out for the digits, then sorting, like so:

```
    for i, item in enumerate(IdSet.items()):
            item_holder = item[0]
            m = re.search(r'\d+$', item_holder).group()

```

Basically what I'd like to write is:

```
for key in dict:
    convert string to its numerical value
    then sort key in ascending order, keeping the values

```

Would anyone have any ideas how to solve this?