[英]Problem with retrieving the value of item in list/dictionary of objects in 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
如果您打印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
的列表,由于方法.index(item)
返回列表中第一个出现的item
的索引,因此得到0。 在您的情况下为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=='']
好吧,由于它们的工作原理,我认为没有办法从字典中获得想要的东西。 您可以打印字典,然后看它像这样:
{'': '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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.