My question is very similar to this one, except I have a dictionary of lists and I\'m interested in changing both the key value and all elements in every list form str
This solution will work for the case where you have an iterable as your value, as in the json you provided.
my_dict = {"0": ["1", "2", "3", "4"], "1": ["0", "2", "3", "4", "27", "94", "95", "97", "128", "217", "218", "317"], "2": ["0", "1", "3", "4", "94", "95"], "3": ["0", "1", "2", "4", "377"], "4": ["0", "1", "2", "3", "27", "28"], "5": ["6", "7", "8"], "6": ["5", "7", "8"], "7": ["5", "6", "8", "14", "23", "40", "74", "75", "76", "362", "371", "372"], "8": ["5", "6", "7", "66"], "9": ["10", "11", "12"], "10": ["9", "11", "12", "56", "130", "131"]}
output_dict = {}
for key, value in my_dict.iteritems():
output_dict[int(key)] = [int(item) for item in value]
output_dict
Output:
{0: [1, 2, 3, 4],
1: [0, 2, 3, 4, 27, 94, 95, 97, 128, 217, 218, 317],
2: [0, 1, 3, 4, 94, 95],
3: [0, 1, 2, 4, 377],
4: [0, 1, 2, 3, 27, 28],
5: [6, 7, 8],
6: [5, 7, 8],
7: [5, 6, 8, 14, 23, 40, 74, 75, 76, 362, 371, 372],
8: [5, 6, 7, 66],
9: [10, 11, 12],
10: [9, 11, 12, 56, 130, 131]}
For the second part of the question, you can use a dict comprehension in line as you read the file. It's obfuscated as hell though.
with open('coauthorshipGraph.txt', 'r') as f:
json_data = { int(key) : [int(item) for item in value] for key, value in json.load(f).iteritems()}
json_data
This yields the same output as above.