我無法將我的工作代碼從列表轉換爲字典。代碼的基礎知識檢查列表中任何關鍵字的文件名。Python3:檢查字典中的關鍵字是否與字符串的任何部分匹配
但是我很難理解字典來轉換它。我試圖拉出每個鍵的名稱,並將其與文件名比較,就像我對列表和元組所做的那樣。這是我正在做的一個模擬版本。
fname = "../crazyfdsfd/fds/ss/rabbit.txt"
hollow = "SFV"
blank = "2008"
empty = "bender"
# things is list
things = ["sheep", "goat", "rabbit"]
# other is tuple
other = ("sheep", "goat", "rabbit")
#stuff is dictionary
stuff = {"sheep": 2, "goat": 5, "rabbit": 6}
try:
print(type(things), "things")
for i in things:
if i in fname:
hollow = str(i)
print(hollow)
if hollow == things[2]:
print("PERFECT")
except:
print("c-c-c-combo breaker")
print("\n \n")
try:
print(type(other), "other")
for i in other:
if i in fname:
blank = str(i)
print(blank)
if blank == other[2]:
print("Yes. You. Can.")
except:
print("THANKS OBAMA")
print("\n \n")
try:
print(type(stuff), "stuff")
for i in stuff: # problem loop
if i in fname:
empty = str(i)
print(empty)
if empty == stuff[2]: # problem line
print("Shut up and take my money!")
except:
print("CURSE YOU ZOIDBERG!")
我能夠通過前兩個例子得到完整的運行,但是我無法讓字典在沒有異常的情況下運行。循環不會將空值轉換爲東西[2]的值。遺憾地在魚苗的口袋裏留下錢。讓我知道,如果我的例子不夠清楚,我所問的。該字典只是簡短的計算列表並將文件添加到其他變量。
在最後的'try'塊中,您可能想分配而不是檢查是否相等?我認爲'empty == str(i)'應該是'empty = str(i)'。這不是主要問題,但需要考慮的事情 – davedwards
我並不清楚你的目標是什麼,但有一點,'fname'只是一個字符串,但'如果我在fname:'似乎想檢查'我'在文件'fname'內容。也許字典行爲的主要問題是,你知道字典有兩個部分:'鍵'和'值',而你似乎正在將關鍵字與字典'鍵'進行比較,所以使用'for i in stuff。 ():'和'if empty == stuff.keys()[2]:' – davedwards
所以對我來說,最後一個'try'塊變成這樣:'try: print(type(stuff) ,「東西」) 爲我在東西。keys():#問題循環 if if open(fname).read(): empty = str(i) print('empty'+ empty) if empty == stuff.keys()[2]: #問題行 print(「閉嘴,拿我的錢!」)' – davedwards