2016-02-05 75 views
0

我试图比较变量与列表中的字典键, 即使其中一个是大小写,另一个小写也是如此AbC == aBCPython:列表中的变量与字典键之间的比较

这是我的代码不能与未知的工作,原因部分:

def information_on_albums(albums_names,user_information): 
# albums names is list which every index is dictionary,^^string 
    user_information = user_information.upper() 
    for album in albums_names: 
     if album.key().upper() == user_information: 
      print album.value()` 
+0

只是为了使你的问题更清楚你可以提供一些albums_names和user_information的例子吗? – Stefano

+0

加上什么是你的问题? – Stefano

+0

这个名字与我的代码相关,这部分不工作 – ariel20

回答

0

我猜你想要做什么是查阅字典被他的钥匙在非大小写敏感的方式。这里你怎么可以这样做:

def information_on_albums(albums_names,user_information): 
# albums names is list which every index is dictionary,^^string 
    user_information = user_information.upper() 
    for album in albums_names: 
     if album.upper() == user_information: 
      return albums_names[album] 

#test 
albums_names = {"name1":"aaa","name2":"bbb","name3":"ccc"} 
user_information = "NAME2" 
print information_on_albums(albums_names,user_information) 

这段代码打印“bbb”,即使通过“NAME2”大写。

不过要小心,如果你有一个dicytionary如下:

albums_names = {"name1":"aaa","name2":"bbb","NAME2":"ccc"} 

“BBB” 将被退回,而不是 “CCC”

0

这里是另一种方法:

def information_on_albums(albums_names,user_information): 
# albums names is list which every index is dictionary,^^string 
    for albums in albums_names: 
     print [ v for k, v in albums.items() if k.upper() == user_information.upper() ] 

albums_names = [{"name1":"aaa","name2":"bbb","name3":"ccc"}] 
user_information = "NAME2" 
information_on_albums(albums_names,user_information) 

输出:

['bbb']