Austin Smith Austin Smith - 1 year ago 64
Python Question

Convert int into str while in __getitem__ Python 2.7

Okay, i have this string:

string = "HelloWorld"

And for this example, I am using a dictionary similar to this:

dic = [{'a':'k','b':'i'},{'a':'i','b':'l'},{'a':'x','b':'n'},{'a':'q','b':'o'}]

Now.. I need to reference a dictionary from the list, so that I can change the characters in my string. To do so normally I would just do this:


But in this case I also need a value from that dictionary. Now I tried this:


But I get the error:

'int' object has no attribute '__getitem__'

Searching for the error gives me answers here on StackOverflow, but they do not fix my problem.

Answer Source

Here's my best crystal ball guess at what you want. The keys of your dictionary are only a and b, which aren't any characters in HelloWorld, but if you actually had characters from your string as keys like the following, this is how I'd do the replacement, assuming you want to rotate through the four different dictionaries:

string = "HelloWorld"
D = [{'H':'a','o':'e','l':'i'},{'e':'b','W':'f','d':'j'},{'l':'c','o':'g'},{'l':'d','r':'h'}]
print ''.join(D[i%4][c] for i,c in enumerate(string))