Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将单个键值对从一个字典移动到另一个字典_Python_Python 3.x_Dictionary - Fatal编程技术网

Python 将单个键值对从一个字典移动到另一个字典

Python 将单个键值对从一个字典移动到另一个字典,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我正在用python构建一个基本的商店,里面有一个物品及其价格的字典。我正在为购物车使用字典,我希望用户能够向购物车添加项目。为此,我的目标是将一个键和值从products字典复制到cart字典。我该怎么做 products = {"Pencil": 1, "Notebook": 2, "Backpack": 3, "Pens": 2, "Markers": 5, "Whiteboard": 30} cart = {} def addToCart(): productToAdd = i

我正在用python构建一个基本的商店,里面有一个物品及其价格的字典。我正在为购物车使用字典,我希望用户能够向购物车添加项目。为此,我的目标是将一个键和值从products字典复制到cart字典。我该怎么做

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

我必须使用原始输入,否则它不会接受字符串,如“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)
注意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')

假设用户将从该列表中选择项目(特别是从键),则:


cart[productToAdd]=cart[v]
更改为
cart[productToAdd]=products[k]
您可以将
cart[productToAdd]=cart[v]
更改为
cart[productToAdd]=price
。不清楚您是想从
products
中完全删除密钥,还是只是“复制”它及其值。它的python3不是python2,
raw_输入
仅用于Python2良好捕获。我会按照给出的答案去做。如果用户提供的产品无效,则更安全。同意,问题更多的是在字典中插入一个新项目,而不是他如何从旧字典中提取新项目。@mtngt Ok,但我认为如果有办法将OPs代码从
O(n)
提取到
O(1)
,那么一定要注意,特别是如果那条路只有一半的长度。
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}