Python如何比较列表中的字符串与dict

时间:2014-10-15 08:08:32

标签: python

我有这样的代码: 它将打印Student

d= u'pen hahahahaha'
area  = [u'Apple',u'Banana',u'lemon']
area2 = [ u'pen',u'book',u'chair' ]
area3 = [u'father',u'mother']
if any(d.startswith(i) for i in area):
    category = 'Fruit'
    print 'Fruit'
elif any(d.startswith(i) for i in area2):
    category = 'Student'
    print 'Student'
elif any(d.startswith(i) for i in area3):
    category = 'family'
    print 'family'

我想知道如何将其编辑为这样的模式:

aa = [{"Fruit":[u'Apple',u'Banana',u'lemon']},
      {"Student":[ u'pen',u'book',u'chair' ]},
      {"Family":[u'father',u'mother']}]

所以我可以比较'pen hahahahaha'中的{"Student":[ u'pen',u'book',u'chair' ]} 保存category = 'Student'

我想有一段时间但不知道,请指导我。谢谢你

3 个答案:

答案 0 :(得分:2)

你可以使用循环:

categories = {
    "Fruit": [u'Apple', u'Banana', u'lemon'],
    "Student": [u'pen', u'book', u'chair'],
    "Family": [u'father', u'mother']
}


def get_category(value):
    for cat, cat_entries in categories.iteritems():
        for cat_entry in cat_entries:
            if value.startswith(cat_entry):
                return cat
    return None


print get_category('pen hahahahaha')

输出:

Student

答案 1 :(得分:0)

使aa字典像:

aa = {"Fruit":[u'Apple',u'Banana',u'lemon'],
      "Student":[ u'pen',u'book',u'chair' ],
      "Family":[u'father',u'mother']}

obj = 'pen'   
for key in aa:
    if obj in aa[key]:
        print(obj + ' is in ' + key)

修改 可能会更符合您的要求

aa = {"Fruit":[u'Apple',u'Banana',u'lemon'],
      "Student":[ u'pen',u'book',u'chair' ],
      "Family":[u'father',u'mother']}

obj = u'pen hahhah'   
for key in aa:
    for item in aa[key]:
        if obj.startswith(item):
            print(obj + ' is in ' + key)

答案 2 :(得分:0)

aa = [{"Fruit":[u'Apple',u'Banana',u'lemon']},
  {"Student":[ u'pen',u'book',u'chair' ]},
  {"Family":[u'father',u'mother']}]
d=u'pen haaaaaa'
print [ x.keys()[0] for x in aa for y in x.values()[0] if y in d.split() ]