簡體   English   中英

在Python3中檢索對象列表/字典中item的值的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM