我有一个充满数字字符串的字典,我想将所有这些值转换成二进制。这是我尝试过的:
for k,v in ValueDict.items():
ValueDict.update(k:bin(v))
但是,这不起作用。 PyCharm说“变量注释的非法目标”,我不明白这是什么意思。据我所知,变量注释是一种对变量类型进行“注释”的方式,但是我不明白这与我的问题有何关系……
谢谢!
答案 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