justWords = {}
words = []
justNums = {}
nums = []
# Check if value in the input is an integer or a word
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
# Replace the values in the dictionary with the correctly sorted words/integers
def go_through(theDict, theList):
counter = 0
for k,v in theDict.iteritems():
theDict[k] = theList[counter]
counter = counter + 1
return theDict
# Replace the values in the original input list with correctly sorted values of the word/int dicts
def inject(theDict, theList):
for k,v in theDict.iteritems():
theList[k] = v
return theList
if __name__ == "__main__":
splitInput = (raw_input("")).split()
# Sort the words and numbers into their own lists as tuples
for i,j in enumerate(splitInput):
if is_number(j):
justNums[i] = j
nums.append(j)
elif not is_number(j):
justWords[i] = j
words.append(j)
print("%s\n%s\n" % (justWords, justNums))
words = sorted(words)
nums = sorted(nums)
print("%s\n%s\n" % (words, nums))
# Replace the values in the dictionaries with the values in the sorted list
justWords = go_through(justWords, words)
justNums = go_through(justNums, nums)
print("%s\n%s\n" % (justWords, justNums))
# Inject correctly maped sorted words into the original list
splitInput = inject(justWords, splitInput)
splitInput = inject(justNums, splitInput)
print("%s" % (' '.join(splitInput)))
anVzdFdvcmRzICAgPSB7fQp3b3JkcyAgICAgICA9IFtdCgpqdXN0TnVtcyAgICA9IHt9Cm51bXMgICAgICAgID0gW10KCiMgQ2hlY2sgaWYgdmFsdWUgaW4gdGhlIGlucHV0IGlzIGFuIGludGVnZXIgb3IgYSB3b3JkCmRlZiBpc19udW1iZXIocyk6CiAgICB0cnk6CiAgICAgICAgZmxvYXQocykKICAgICAgICByZXR1cm4gVHJ1ZQogICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgcmV0dXJuIEZhbHNlCgojIFJlcGxhY2UgdGhlIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBjb3JyZWN0bHkgc29ydGVkIHdvcmRzL2ludGVnZXJzICAgICAgIApkZWYgZ29fdGhyb3VnaCh0aGVEaWN0LCB0aGVMaXN0KToKCWNvdW50ZXIgPSAwCglmb3Igayx2IGluIHRoZURpY3QuaXRlcml0ZW1zKCk6CgkJdGhlRGljdFtrXSAgID0gdGhlTGlzdFtjb3VudGVyXQoJCWNvdW50ZXIgICAgICA9IGNvdW50ZXIgKyAxCglyZXR1cm4gdGhlRGljdAoKIyBSZXBsYWNlIHRoZSB2YWx1ZXMgaW4gdGhlIG9yaWdpbmFsIGlucHV0IGxpc3Qgd2l0aCBjb3JyZWN0bHkgc29ydGVkIHZhbHVlcyBvZiB0aGUgd29yZC9pbnQgZGljdHMKZGVmIGluamVjdCh0aGVEaWN0LCB0aGVMaXN0KToKCWZvciBrLHYgaW4gdGhlRGljdC5pdGVyaXRlbXMoKToKCQl0aGVMaXN0W2tdID0gdgoJcmV0dXJuIHRoZUxpc3QKCQppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgoJCglzcGxpdElucHV0ICA9IChyYXdfaW5wdXQoIiIpKS5zcGxpdCgpCgkKCSMgU29ydCB0aGUgd29yZHMgYW5kIG51bWJlcnMgaW50byB0aGVpciBvd24gbGlzdHMgYXMgdHVwbGVzCglmb3IgaSxqIGluIGVudW1lcmF0ZShzcGxpdElucHV0KToKCQlpZiBpc19udW1iZXIoaik6CgkJCWp1c3ROdW1zW2ldICA9IGoKCQkJbnVtcy5hcHBlbmQoaikKCQllbGlmIG5vdCBpc19udW1iZXIoaik6CgkJCWp1c3RXb3Jkc1tpXSA9IGoKCQkJd29yZHMuYXBwZW5kKGopCgkJCglwcmludCgiJXNcbiVzXG4iICUgKGp1c3RXb3JkcywganVzdE51bXMpKQoKCXdvcmRzID0gc29ydGVkKHdvcmRzKQoJbnVtcyAgPSBzb3J0ZWQobnVtcykKCglwcmludCgiJXNcbiVzXG4iICUgKHdvcmRzLCBudW1zKSkKCgkjIFJlcGxhY2UgdGhlIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyaWVzIHdpdGggdGhlIHZhbHVlcyBpbiB0aGUgc29ydGVkIGxpc3QKCWp1c3RXb3JkcyA9IGdvX3Rocm91Z2goanVzdFdvcmRzLCB3b3JkcykKCWp1c3ROdW1zICA9IGdvX3Rocm91Z2goanVzdE51bXMsIG51bXMpCgoJcHJpbnQoIiVzXG4lc1xuIiAlIChqdXN0V29yZHMsIGp1c3ROdW1zKSkKCQoJIyBJbmplY3QgY29ycmVjdGx5IG1hcGVkIHNvcnRlZCB3b3JkcyBpbnRvIHRoZSBvcmlnaW5hbCBsaXN0CglzcGxpdElucHV0ID0gaW5qZWN0KGp1c3RXb3Jkcywgc3BsaXRJbnB1dCkKCXNwbGl0SW5wdXQgPSBpbmplY3QoanVzdE51bXMsIHNwbGl0SW5wdXQpCgoJcHJpbnQoIiVzIiAlICgnICcuam9pbihzcGxpdElucHV0KSkpCg==
{0: 'car', 1: 'truck', 4: 'bus'}
{2: '8', 3: '4', 5: '6', 6: '1'}
['bus', 'car', 'truck']
['1', '4', '6', '8']
{0: 'bus', 1: 'car', 4: 'truck'}
{2: '1', 3: '4', 5: '6', 6: '8'}
bus car 1 4 truck 6 8