python - 具有相同键值对的更新字典

时间:2016-05-23 18:12:32

标签: python python-2.7 python-3.x

我似乎在python中用词典打了一堵墙。 是否可以使用相同的键值对更新字典。 每当我尝试使用相同的键值对更新我的字典时,都不会执行更新操作,它会因为重复而忽略要更新的对。在python字典中更新键值对重复是否有一些限制?

我已在下面发布了我的代码以供演示。 谢谢Inadvance。

import time
import collections
from random import randrange


def faceCard(card,cardNum):
    cDict = collections.OrderedDict()
    print("Card:",card)
    if card == 11:
        cDict["Jack"] = 10
    elif card == 12:
        cDict["Queen"] = 10
    elif card == 13:
        cDict["King"] = 10
    elif card == 14:
        cDict["Ace"] = 11
    else:
        cDict[cardNum] = card

    return cDict

def main():
    pCards = collections.OrderedDict()
    dCards = collections.OrderedDict()

    while True:
        pCards.update(faceCard(randrange(2,15,1),"pCard1"))
        time.sleep(.25)
        dCards.update(faceCard(randrange(2,15,1),"dCard1"))
        time.sleep(.25)
        pCards.update(faceCard(randrange(2,15,1),"pCard2"))
        time.sleep(.25)
        dCards.update(faceCard(randrange(2,15,1),"dCard2"))
        time.sleep(.25)

        print("Player",pCards)
        print("Dealer",dCards)

        pCards.clear()
        dCards.clear()


if __name__ == "__main__":
    main()

2 个答案:

答案 0 :(得分:1)

你似乎对字典的作用感到困惑。

键可能只出现在字典中一次。无论最近的任务是什么,它都有一个与之关联的值。

将其视为电话簿:您只需将每个人的姓名保留在一个条目中,并与一个电话号码相关联。如果使用名称和相同的电话号码覆盖,则看不到任何更改。如果您使用新电话号码覆盖,则会取代旧电话号码。 (是的,您可以保留一个人的电话号码列表,但这是此示例的扩展名。)

答案 1 :(得分:0)

如果您希望将多个值与某个键相关联,则可以将其存储为<key, <list_of_values>>的字典。

cDict = {}

def insert_into_dict(val):
    if key not in cDict:
        cDict[key] = [val]
    else:
        cDict[key].append(val)