猿问

在Python3中检索对象列表/字典中的项目值的问题

我正在尝试将字符串变量放入 python3.7 中的列表/字典中,并尝试稍后检索它们以供使用。


我知道我可以创建一个字典,如:


string_dict1 = {"A":"A", "B":"B", "C":"C", "D":"D", "E":"E", "F":"F"}

然后检索值,但在这种特定情况下不是我想要的。


这是代码:


A = ""

B = "ABD"

C = ""

D = "sddd"

E = ""

F = "dsas"



string_dict = {A:"A", B:"B", C:"C", D:"D", E:"E", F:"F"}

string_list = [A,B,C,D,E,F]

for key,val in string_dict.items():

    if key == "":

        print(val)



for item in string_list:

    if item == "":

        print(string_list.index(item))


我得到的结果是:


E

0

0

0

我想要的结果是:


A

C

E

0

2

4


喵喔喔
浏览 122回答 2
2回答

元芳怎么了

如果您打印string_dict,您会注意到问题:string_dict = {A:"A", B:"B", C:"C", D:"D", E:"E", F:"F"}print(string_dict)# output: {'': 'E', 'ABD': 'B', 'sddd': 'D', 'dsas': 'F'}它包含一个值为 的条目""。这是因为你将多个值关联到同一个键,而这在 python 中是不可能的,所以只有最后一个赋值是有效的(在这种情况下E:"E")。如果要将多个值与同一个键关联,可以关联一个列表:string_dict = {A:["A","C","E"], B:"B", D:"D", F:"F"}关于字符串列表string_list,您得到 0,因为该方法.index(item)返回列表中第一次出现的索引item。在您的情况下为 0。例如,如果您将列表更改[A,B,C,D,E,F]为[B,B,C,D,E,F]. 您的代码将打印2.如果要打印列表中空字符串的索引:for index, value in enumerate(string_list):    if value == '':        print(index)或者以更优雅的方式,您可以使用列表推导:[i for i,x in enumerate(string_list) if x=='']

catspeake

好吧,我不认为有办法从字典中得到你想要的,因为它们是如何工作的。你可以打印你的字典,看看它看起来像这样:{'': 'E', 'ABD': 'B', 'sddd': 'D', 'dsas': 'F'}这里发生的事情是 A 被 C 覆盖,然后被 E 覆盖。但是我玩弄了这个列表,这就是我正确获得最后三位数字的方法:for item in string_list:    if item != '':        print(string_list.index(item) - 1)这打印:024
随时随地看视频慕课网APP

相关分类

Python
我要回答