Python Forum

Full Version: Assigning Value To Period Seperated List
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have period separated list of values, like this
1.1.1.1
1.2.1.1
1.1.2.1
etc and these can be duplicated. I need a way to assign a alpha value to them so for example

1.1.1.1 = A
1.2.1.1 = B
1.1.2.1 = C
and so on. How could I do this with python?
I don't understand what you are wanting to do but when assigning the variable goes first
A = '1.1.1.1'
In what form are these values? Is it a string?

If so, you can just use them as a dictionary key, and set the value to what you want.

>>> d = {}
>>> d['1.1.1.1'] = 'A'
>>> d['1.2.1.1'] = 'B'
>>> d['1.1.2.1'] = 'C'
>>> d
{'1.1.1.1': 'A', '1.2.1.1': 'B', '1.1.2.1': 'C'}
@Yoriz --

i have an excel workbook that will have period separated values.

As an example like the below
1.1.1.1
1.2.1.1
1.1.2.1
2.1.1.1
2.1.2.1
2.2.2.1
1.1.1.1
1.1.1.1
2.1.1.1
In the above list we have duplicate values. I need each unique value in the list to be assigned an alphabetical value, starting with A.

(using proper python this time)
A = 1.1.1.1
B = 1.2.1.1
C = 1.1.2.1
D = 2.1.1.1
E = 2.1.2.1
F = 2.2.2.1
A = 1.1.1.1
A = 1.1.1.1
D = 2.1.1.1
how can I auto assign the alphabetical value to the period separated values?


--------------------------------------------------------------------------------------------------------

@bowlofred -

I am scanning the excel workbook and creating the period separated list like so

    mr2 = ws2.max_row
    mc2 = ws2.max_column

    for y in range(2, mr2):
        strValue = ''
        for x in range(2, mc2):
            strValue = strValue + '.' + str(ws2.cell(y, x).value)
        strValue = strValue[1:]
        ws2.cell(y, mc2 + 1).value = strValue
Does that answer your question?
Put all your excel strings into a dictionary. Then loop through all the keys and assign your alphabetical values.

import string
import pprint

excel_vals = [
        "1.1.1.1",
        "1.2.1.1",
        "1.1.2.1",
        "2.1.1.1",
        "2.1.2.1",
        "2.2.2.1",
        "1.1.1.1",
        "1.1.1.1",
        "2.1.1.1",
        ]

# Put excel_vals into a dictionary.
d = dict.fromkeys(excel_vals)

# Assign alpha value to each key in the dictionary
for k,v in zip(d, string.ascii_uppercase):
    d[k] = v

pp = pprint.PrettyPrinter()
pp.pprint(d)
Output:
{'1.1.1.1': 'A', '1.1.2.1': 'C', '1.2.1.1': 'B', '2.1.1.1': 'D', '2.1.2.1': 'E', '2.2.2.1': 'F'}
That looks like exactly what I'm after. I guess my last hurdle is how do I read in an entire column using openpyxl?

I have
mc2 = ws2.max_column
I'd then want to read all data from mc2 into the dictionary excluding the first row (that would be the header)
If the initial question is resolved please click set solved and start a new thread for a separate question.