为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喔喔 2022-05-24 17:20:29
我正在尝试将字符串变量放入 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))我得到的结果是:E000我想要的结果是:ACE024
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

如果您打印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=='']


查看完整回答
反对 回复 2022-05-24
?
catspeake

TA贡献1111条经验 获得超0个赞

好吧,我不认为有办法从字典中得到你想要的,因为它们是如何工作的。你可以打印你的字典,看看它看起来像这样:


{'': 'E', 'ABD': 'B', 'sddd': 'D', 'dsas': 'F'}

这里发生的事情是 A 被 C 覆盖,然后被 E 覆盖。


但是我玩弄了这个列表,这就是我正确获得最后三位数字的方法:


for item in string_list:

    if item != '':

        print(string_list.index(item) - 1)

这打印:


0

2

4


查看完整回答
反对 回复 2022-05-24
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号