我已經成功地從文本檔案創建了一個嵌套字典,但現在我想從帶有變數的嵌套字典中調出一個特定的字典
#Text file
shanm = null|Shanmugaraja|09/04/2002|0149606345|020409140817|0199999999|4870 2929 0108 2870
jiken = null|Soo Idiot Jiken|08/06/2000|0199999999|020908140213|011349780|8900 2828 1129 0889
keller = null|Mathew Keller|02/05/2002|0199999999|0203140819|019607892|9801 2828 5596 0889
#這是我的嵌套字典代碼
keys = ["Full Name", "Date of Birth", "Phone Number",
"Identification Card (IC) Number", "Emergency Contact Number",
"Credit /Debit Card Details "]
username = "jiken"
with open("something.txt", 'r') as f:
for line in f:
key, values = line.strip().split(" = ") # note the space around =, to avoid trailing space in key
values = values.split('|')
# print(key)
data2 = {key: dict(zip(keys, values[1:]))}
print(data2)
#輸出。它正在作業,但我不想調出整個 dict 而我只想調出以名稱“jiken”開頭的 dict 但它不起作用
{'shanm': {'Full Name': 'Shanmugaraja', 'Date of Birth': '09/04/2002', 'Phone Number': '0149606345', 'Identification Card (IC) Number': '020409140817', 'Emergency Contact Number': '0199999999', 'Credit /Debit Card Details ': '4870 2929 0108 2870'}}
{'jiken': {'Full Name': 'Soo Idiot Jiken', 'Date of Birth': '08/06/2000', 'Phone Number': '0199999999', 'Identification Card (IC) Number': '020908140213', 'Emergency Contact Number': '011349780', 'Credit /Debit Card Details ': '8900 2828 1129 0889'}}
{'keller': {'Full Name': 'Mathew Keller', 'Date of Birth': '02/05/2002', 'Phone Number': '0199999999', 'Identification Card (IC) Number': '0203140819', 'Emergency Contact Number': '019607892', 'Credit /Debit Card Details ': '9801 2828 5596 0889'}}
#Desired 輸出,在這種情況下,我希望它根據用戶名變數“jiken”列印字典
{'jiken': {'Full Name': 'Soo Idiot Jiken', 'Date of Birth': '08/06/2000', 'Phone Number': '0199999999', 'Identification Card (IC) Number': '020908140213', 'Emergency Contact Number': '011349780', 'Credit /Debit Card Details ': '8900 2828 1129 0889'}}
uj5u.com熱心網友回復:
只需檢查是否key == username然后從中創建 data2 如下:
keys = ["Full Name", "Date of Birth", "Phone Number",
"Identification Card (IC) Number", "Emergency Contact Number",
"Credit /Debit Card Details "]
username = "jiken"
with open("something.txt", 'r') as f:
for line in f:
key, values = line.strip().split(" = ") # note the space around =, to avoid trailing space in key
values = values.split('|')
# print(key)
if key == username:
data2 = {key: dict(zip(keys, values[1:]))}
print(data2)
uj5u.com熱心網友回復:
你可以試試:
keys = ["Full Name", "Date of Birth", "Phone Number", "Identification Card (IC) Number", "Emergency Contact Number", "Credit /Debit Card Details "]
data2 = {}
with open("something.txt", 'r') as f:
for line in f:
key, values = line.strip().split(" = ") # note the space around =, to avoid trailing space in key
values = values.split('|')
data2[key] = dict(zip(keys, values[1:]))
# Here, you can add any username and take respective data.
username = "jiken"
print(data2[username])
username = "shanm"
print(data2[username])
uj5u.com熱心網友回復:
您可以定義data2為list然后附加dict到list然后定義搜索功能,并且始終可以搜索username以下任何內容:
>>> data2 = []
>>> with open("something.txt", 'r') as f:
... for line in f:
... key, values = line.strip().split(" = ")
... values = values.split('|')
... data2.append({key: dict(zip(keys, values[1:]))})
# after read file you have this data2
>>> data2 = [{'shanm': {'Full Name': 'Shanmugaraja', 'Date of Birth': '09/04/2002', 'Phone Number': '0149606345', 'Identification Card (IC) Number': '020409140817', 'Emergency Contact Number': '0199999999', 'Credit /Debit Card Details ': '4870 2929 0108 2870'}},
... {'jiken': {'Full Name': 'Soo Idiot Jiken', 'Date of Birth': '08/06/2000', 'Phone Number': '0199999999', 'Identification Card (IC) Number': '020908140213', 'Emergency Contact Number': '011349780', 'Credit /Debit Card Details ': '8900 2828 1129 0889'}},
... {'keller': {'Full Name': 'Mathew Keller', 'Date of Birth': '02/05/2002', 'Phone Number': '0199999999', 'Identification Card (IC) Number': '0203140819', 'Emergency Contact Number': '019607892', 'Credit /Debit Card Details ': '9801 2828 5596 0889'}}]
>>> def ret_dct_user(dict_username , username):
... for dct in dict_username:
... if username in dct:
... return dct
輸出:
>>> ret_dct_user(data2, 'jiken')
{'jiken': {'Full Name': 'Soo Idiot Jiken',
'Date of Birth': '08/06/2000',
'Phone Number': '0199999999',
'Identification Card (IC) Number': '020908140213',
'Emergency Contact Number': '011349780',
'Credit /Debit Card Details ': '8900 2828 1129 0889'}}
>>> ret_dct_user(data2, 'shanm')
{'shanm': {'Full Name': 'Shanmugaraja',
'Date of Birth': '09/04/2002',
'Phone Number': '0149606345',
'Identification Card (IC) Number': '020409140817',
'Emergency Contact Number': '0199999999',
'Credit /Debit Card Details ': '4870 2929 0108 2870'}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318291.html
