代码之家  ›  专栏  ›  技术社区  ›  Flying Thunder

Python类型转换循环字典

  •  2
  • Flying Thunder  · 技术社区  · 7 年前

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

    提前谢谢!

    3 回复  |  直到 7 年前
        1
  •  4
  •   U13-Forward    7 年前

    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)
    
        2
  •  0
  •   ramazan polat    7 年前

    你需要提供一个 dict update 方法。

    for k,v in ValueDict.items():
        ValueDict.update({k:bin(v)})
    
        3
  •  0
  •   Community Mohan Dere    6 年前

    dict.update :

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

    update() 接受其中一个 另一本字典 对象或对象 键/值对的iterable (如元组或其他长度为2的可数)。如果指定了关键字参数,则会使用以下键/值对更新字典: 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]}