簡體   English   中英

將單個鍵值對從一個字典移動到另一個

[英]Moving a single key value pair from one dictionary to another

我正在建立一個基本的python商店,其中包含商品及其價格的字典。 我正在為購物車使用字典,希望用戶能夠向購物車中添加項目。 為此,我旨在將鍵和值從產品字典復制到購物車字典。 我怎樣才能做到這一點?

products = {"Pencil": 1, "Notebook": 2, "Backpack": 3, "Pens": 2, "Markers": 5, "Whiteboard": 30}
cart = {}

def addToCart():
    productToAdd = input("What would you like to add? ")
    for k,v in products.items():
        if productToAdd == k:
            price = v
            cart[productToAdd] = cart[v]
            break
products = {"Pencil": 1, "Notebook": 2, "Backpack": 3, "Pens": 2, "Markers": 5, "Whiteboard": 30}
cart = {}

def addToCart():
    try:
        productToAdd = input("What would you like to add? ")
        cart[productToAdd]=products[productToAdd]
    except KeyError:
        print("No such product")

請注意,python區分大小寫,“ pencil”和“ Pencil”不同。 如果您確定產品首先要成為大寫字母,則可以使用

productToAdd = input("What would you like to add? ").title()

您可以使用dict.setdefault(key, default=None)
例:

def addToCart():
    productToAdd = input("What would you like to add? ")
    cart[productToAdd]=products.setdefault(productToAdd, 'No such product')

假設用戶將從該列表中選擇項目(尤其是從鍵中選擇),則:

products = {"Pencil": 1, "Notebook": 2, "Backpack": 3, "Pens": 2, "Markers": 5, 
"Whiteboard": 30}

cart = {}


def addToCart():
    productToAdd = input("What would you like to add? ")
    if not productToAdd.title() in products: # for removing caps confusion
        print('No such item')
    else: cart[productToAdd] = products[productToAdd]


>>> addToCart()
What would you like to add? Pencil
>>> cart
{'Pencil': 1}

我必須使用raw_input,否則將無法使用“ Pencil”之類的字符串。 這是復制鍵值對的方式。

products = {"Pencil": 1, "Notebook": 2, "Backpack": 3, "Pens": 2, "Markers": 5, "Whiteboard": 30}

cart = {}

def addToCart():
    productToAdd = raw_input("What would you like to add? ")
    for k,v in products.items():
        print(k)
        if productToAdd == k:
            cart[k] = v
            break

addToCart()
print(cart)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM