在遍歷字典串列時遇到了一些基本問題。我想遍歷名為 jslist 的串列并獲得底部顯示的輸出。基本上我想從串列中提取選定的鍵:值對(我粘貼為下面的示例 - site_id、sitekey、昵稱)并將它們存盤在另一個字典串列中。
jslist = [
{'site_id': '1111111', 'hostname': 'abc.com', 'nickname': 'abc.com', 'sitekey': '29346385345', 'sitekey_admin': '293857349857934857345', 'timezone': '1', 'visitors_online': '1', 'visitors_today': '34'},
{'site_id': '100992048', 'hostname': 'gcd.com', 'nickname': 'gcd.com', 'sitekey': '938573945739453', 'sitekey_admin': '20395734985793', 'timezone': '1', 'visitors_online': '0', 'visitors_today': '2'}]
dict_1 = {}
for k in jslist:
dict_1['site_id'] = k['site_id']
dict_1['sitekey'] = k['sitekey']
dict_1['nickname'] = k['nickname']
print(list(dict_1))
電流輸出:
{'site_id': '100992048', 'sitekey': '938573945739453', 'nickname': 'gcd.com'}
預期產出
[{'site_id': '100992048', 'sitekey': '938573945739453', 'nickname': 'gcd.com'},{'site_id': '1111111', 'sitekey': '29346385345', 'nickname': 'abc.com'}]
uj5u.com熱心網友回復:
您為每個使用一個 dict,因此您不斷附加相同的實體,dict 創建應該在回圈內。您還可以將所需的密鑰存盤在串列中,以使代碼更易于更新和正確
結合串列理解
keep = {'site_id', 'sitekey', 'nickname'}
jslist_new = [{k: item[k] for k in keep} for item in jslist]
uj5u.com熱心網友回復:
您只是更新相同的 dict 而不是將 dict 推送到新串列。就是這樣:
jslist = [
{'site_id': '1111111', 'hostname': 'abc.com', 'nickname': 'abc.com', 'sitekey': '29346385345', 'sitekey_admin': '293857349857934857345', 'timezone': '1', 'visitors_online': '1', 'visitors_today': '34'},
{'site_id': '100992048', 'hostname': 'gcd.com', 'nickname': 'gcd.com', 'sitekey': '938573945739453', 'sitekey_admin': '20395734985793', 'timezone': '1', 'visitors_online': '0', 'visitors_today': '2'}]
jslist_new = []
for k in jslist:
dict_1 = {}
dict_1['site_id'] = k['site_id']
dict_1['sitekey'] = k['sitekey']
dict_1['nickname'] = k['nickname']
jslist_new.append(dict_1)
print(jslist_new)
uj5u.com熱心網友回復:
您可以將所需的值存盤在臨時字典中并將其附加到串列中......就像這樣
jslist = [
{'site_id': '1111111', 'hostname': 'abc.com', 'nickname': 'abc.com', 'sitekey': '29346385345', 'sitekey_admin': '293857349857934857345', 'timezone': '1', 'visitors_online': '1', 'visitors_today': '34'},
{'site_id': '100992048', 'hostname': 'gcd.com', 'nickname': 'gcd.com', 'sitekey': '938573945739453', 'sitekey_admin': '20395734985793', 'timezone': '1', 'visitors_online': '0', 'visitors_today': '2'}]
res = []
for dct in jslist:
temp = dict()
for key, val in dct.items():
if key in ("site_id", "sitekey", "nickname"):
temp[key] = val
res.append(temp)
print(res)
您可以將其壓縮為這樣的串列理解......
jslist = [
{'site_id': '1111111', 'hostname': 'abc.com', 'nickname': 'abc.com', 'sitekey': '29346385345', 'sitekey_admin': '293857349857934857345', 'timezone': '1', 'visitors_online': '1', 'visitors_today': '34'},
{'site_id': '100992048', 'hostname': 'gcd.com', 'nickname': 'gcd.com', 'sitekey': '938573945739453', 'sitekey_admin': '20395734985793', 'timezone': '1', 'visitors_online': '0', 'visitors_today': '2'}]
res = [{key:val for key, val in dct.items() if key in ("site_id", "sitekey", "nickname")} for dct in jslist]
print(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/400095.html
