Python - цикл преобразования типов через словарь - PullRequest
0 голосов
/ 24 октября 2018

У меня есть словарь, заполненный числовыми строками, и я хочу преобразовать каждое из этих значений в двоичный файл.Вот что я попробовал:

    for k,v in ValueDict.items():
        ValueDict.update(k:bin(v))

Однако это не работает.PyCharm говорит «Недопустимая цель для переменной аннотации», я не понимаю, что это значит.Насколько я знаю, аннотация переменных - это способ «комментировать» типы переменных, но я не понимаю, как это связано с моей проблемой ...

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

См. Документацию на dict.update :

Обновите словарь парами ключ / значение из других, перезаписав существующие ключи.Возврат Нет .

update() принимает либо другой словарь объект, либо итерацию пар ключ / значение (в виде кортежей или других итераций длины два).Если заданы аргументы ключевого слова, словарь обновляется следующими парами ключ / значение: d.update(red=1, blue=2).

Примеры:

# dict expression
d = {"a":1, "b":2, "c":3}
>>> {'a': 1, 'c': 3, 'b': 2}

# multiple updates: no loop needed
d.update( {"a" : 11, "b" : 22} )
>>> {'a': 11, 'c': 3, 'b': 22}

# multiple adds: no loop needed (also no '' around keys)
d.update( A = 111, B = 22 )
>>> {'a': 11, 'A': 111, 'c': 3, 'b': 22, 'B': 22}

# updating all keys using loop
for k,v in d.items():
    d[k]=v*2
>>> {'a': 22, 'A': 222, 'c': 6, 'b': 44, 'B': 44}


# add values to a list if same keys and not yet in
# providing an existing key here would overwrite that one
new_ones = ( ("X",42), ("X",4711) )
for k,v in new_ones:
    entry = d.setdefault(k,[])
    entry.append(v)
>>> {'a': 22, 'A': 222, 'c': 6, 'b': 44, 'B': 44, 'X': [42, 4711]}

# no loop - update from iterable of key/value pairs
new_ones = ( ("i",42), ("j",4711) )
d.update(new_ones)
>>> {'a': 22, 'A': 222, 'c': 6, 'b': 44, 'i': 42, 'j': 4711, 'B': 44, 'X': [42, 4711]}
0 голосов
/ 24 октября 2018

Вам необходимо предоставить метод от dict до update.

for k,v in ValueDict.items():
    ValueDict.update({k:bin(v)})
0 голосов
/ 24 октября 2018

Попробуйте использовать словарь:

print({k:bin(v) for k,v in ValueDict.items()})

Или, если версия меньше 2.5:

print(dict((k:bin(v) for k,v in ValueDict.items())))

Ваш код не работает с : в ValueDict.update(k:bin(v))

Чтобы использовать ваш стиль:

for k,v in ValueDict.items():
    ValueDict.update({k:bin(v)})

Или:

for k,v in ValueDict.items():
    ValueDict[k]=bin(v)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...