如何检查一个字典中的键和值是否在另一个字典中?

时间:2016-04-28 12:54:56

标签: python python-3.x dictionary

我在搜索一个字典(股票)中的密钥和相应值是否在另一个字典(购物篮)中时遇到问题

这是我收到的错误:

        stock = {
            '10005' : {
                    'name' : 'Conference Pears Loose',
                    'price' : 2.00,
                    'unit' : 'kg', 
                    'promotion' : None,
                    'group' : None,
                    'amount' : 1.550
             },
             '10013' : {
                    'name' : 'Emmental Slices 250G',
                    'price' : 1.75,
                    'unit' : 'pieces', 
                    'promotion' : 'get2pay1',
                    'group' : None,
                    'amount' : 9
             },
             '10015' : { 
                    'name' : 'Diced Beef 400G', 
                    'price' : 4.50,
                    'unit' : 'pieces', 
                    'promotion': 'get4pay3',
                    'group' : 4,
                    'amount' : 14
            }}

        basket = {}

        if stock['10005'] in basket:
            print("yay")
        else:
            print("noo")

如果你想看看,这是我的代码。我试过在篮子里买股票[关键]。但是这给出了一个错误,我想不出另一种尝试。

非常感谢

class Parent {
};

class Child : public Parent {
};

void Test(Parent* parents, uint8_t parentCount, uint16_t parentSize) {
    for (uint8_t ii = 0; ii < parentCount; ++ii) {
        void* parentvoid = reinterpret_cast<char*>(parents) + ii * parentSize;
        Parent* parent = parentvoid;
    }
}

int main() {
    Parent parents[3];
    Test(parents, 3, sizeof(parents[0]));

    Child children[3];
    Test(children, 3, sizeof(children[0]));
}

5 个答案:

答案 0 :(得分:1)

只需使用密钥......

if '10005' in basket:
    print("it's in basket")
elif '10005' in stock:
    print("it's in stock")
else:
    print("it's nowhere")

答案 1 :(得分:1)

你正在寻找股票[&#39; 10005&#39;]的价值,这是一个大型的股票,也是一个关键的篮子。

https://docs.python.org/2/library/stdtypes.html#typesmapping

字典的键几乎是任意值。不可清除的值,即包含列表,字典或其他可变类型的值(通过值而不是按对象标识进行比较)不能用作键。

我想也许你想看看&#39; 10005&#39;在篮子里

答案 2 :(得分:0)

您可以尝试这样的事情:

key = 'a key your are testing'
if basket.get(key, false) == stock[key]:
    print('yes')
else:
    print('no')

答案 3 :(得分:0)

首先,您无法测试某些内容是否包含字典。错误消息TypeError: unhashable type: 'dict'基本上告诉您;有关here的一些细节。

您可能需要两个步骤:

  1. 目标字典中的给定键是什么?
  2. 相应的值是否匹配?
  3. 例如:

    if '10005' in basket and basket['10005'] == stock['10005']:
        print "Yup"
    else:
        print "Nope"
    

答案 4 :(得分:0)

import json 
stock = {
        '10005' : {
                'name' : 'Conference Pears Loose',
                'price' : 2.00,
                'unit' : 'kg', 
                'promotion' : None,
                'group' : None,
                'amount' : 1.550
         },
         '10013' : {
                'name' : 'Emmental Slices 250G',
                'price' : 1.75,
                'unit' : 'pieces', 
                'promotion' : 'get2pay1',
                'group' : None,
                'amount' : 9
         },
         '10015' : { 
                'name' : 'Diced Beef 400G', 
                'price' : 4.50,
                'unit' : 'pieces', 
                'promotion': 'get4pay3',
                'group' : 4,
                'amount' : 14
        }}

basket = {}
for item in stock.keys():
    if item in basket.keys():
        print("This key " + item + " is in basket") 
    else:
        print("This key " + item + " is not in basket")

for item in stock.values():
    if item in basket.values():
        print("This value " + json.dumps(item) + " is in basket") 
    else:
        print("This value " + json.dumps(item) + " is not in basket")