Python-通过字典进行类型转换循环

时间:2018-10-24 08:25:24

标签: python python-3.x loops dictionary

我有一个充满数字字符串的字典,我想将所有这些值转换成二进制。这是我尝试过的:

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

但是,这不起作用。 PyCharm说“变量注释的非法目标”,我不明白这是什么意思。据我所知,变量注释是一种对变量类型进行“注释”的方式,但是我不明白这与我的问题有何关系……

谢谢!

3 个答案:

答案 0 :(得分:4)

尝试使用字典理解:

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)

答案 1 :(得分:0)

请参阅dict.update上的文档:

  

使用其他键/值对更新字典,覆盖现有键。返回 None

     

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]}

答案 2 :(得分:0)

您需要提供一种Circle c = new Circle(); Triangle t = c; // Impossible due to Circle not being a Triangle Shape s = c; // Possible because a Circle is a Shape Triangle t2 = s; // Impossible because Shape may be a Triangle or any other derived class dict的方法。

update