Я хочу изменить ключи словаря со строки на целое число - PullRequest
1 голос
/ 27 января 2020

Переменная данных состоит из целых чисел в качестве ключей и других словарей в качестве значений. Тем не менее, 0 в кавычках, который рассматривается как строка. Я хочу преобразовать его как int.

data[keys].keys()
dict_keys(['0', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

1 Ответ

2 голосов
/ 27 января 2020

Простой способ исправить ваш словарь - сделать

d[0] = d['0']
del d['0']

Однако, вот удобная функция, которую вы можете использовать для преобразования всех ключей char int в int:

def convert_dict(d):
    keys = list(d.keys())
    for key in keys:
        if isinstance(key, str):
            try:
                int_key = int(key)
                d[int_key] = d[key]
                del d[key]
            except ValueError:
                pass
    return d

test

d = {'0':0, 1:1, 2:2, 'hello': 'world'}
convert_dict(d)
{1: 1, 2: 2, 'hello': 'world', 0: 0}
...