我正在嘗試使用一些字典生成一個 python 串列,然后在串列中使用字典中的特定物件對串列進行排序。
我有以下代碼:
data = {"data": []}
for client in clients:
if client["network"] == "wireless":
if "hostname" in client:
if client["hostname"][0:3] == "PA_" or client["hostname"][0:3] == "PA-":
item = {"{#HOSTNAME}": client["hostname"], "{#IP}": client["ip"], "{#MAC}": client["mac"],
"{#UPTME}": client["_uptime_by_uap"]}
data["data"].append(item)
pprint(data)
它準確地輸出:
{'data': [{'{#HOSTNAME}': 'PA_abc',
'{#IP}': '192.168.1.1',
'{#MAC}': 'xx:xx:xx:xx:xx:xx',
'{#UPTME}': 540339},
{'{#HOSTNAME}': 'PA-cxz',
'{#IP}': '192.168.1.2',
'{#MAC}': 'zz:zz:zz:zz:zz:zz',
'{#UPTME}': 583768},
{'{#HOSTNAME}': 'PA_jjj',
'{#IP}': '192.168.1.3',
'{#MAC}': 'cc:cc:cc:cc:cc:cc',
'{#UPTME}': 1158902},
{'{#HOSTNAME}': 'PA_BBB',
'{#IP}': '192.168.1.4',
'{#MAC}': 'ff:ff:ff:ff:ff:ff',
'{#UPTME}': 1086962}]}
我想要實作的是按 {#UPTME} 列印此串列排序...
我嘗試遵循我在這篇文章中找到的關于串列排序的邏輯并提出:
data.sort(key=lambda x: x.get('data'['{#UPTME}']))
但是當我運行它時,我收到以下錯誤訊息:
AttributeError: 'dict' object has no attribute 'sort'
另外,我在 Stack Overflow 上搜索了這個問題,但看到了多個被否決的問題,但沒有一個為我解決。在我嘗試和問題之前:
問題1: 嘗試從#1更改為#2,發生同樣的錯誤:
data.sort(key=lambda x: x.get('data'['{#UPTME}'])) #1
input_list = sorted(data.iteritems(), key=lambda x: x[0]['{#UPTME}']) #2
問題 2:嘗試了那里指定的 2 種方法,標記為已解決,但也沒有用:
# Method #1 Test
newlist = sorted(data, key=lambda x: x['{#UPTME}'])
print(newlist)
# Method #2 Test
newlist2 = sorted(data, key=itemgetter('{#UPTME}'))
print(newlist2)
uj5u.com熱心網友回復:
我認為您只是在字典上呼叫排序而不是字典內的陣列時犯了一個小錯誤。
嘗試:
data['data'].sort(key=lambda x: x.get('{#UPTME}'))
uj5u.com熱心網友回復:
如果您Dict Comprehension
有多個keys
and values
indata
并且您想對value
每個key
.
data_new = {k: sorted(v, key=lambda x:x.get('{#UPTME}', float('inf')))
for k,v in data.items()}
print(data_new)
{'data': [{'{#HOSTNAME}': 'PA_abc',
'{#IP}': '192.168.1.1',
'{#MAC}': 'xx:xx:xx:xx:xx:xx',
'{#UPTME}': 540339},
{'{#HOSTNAME}': 'PA-cxz',
'{#IP}': '192.168.1.2',
'{#MAC}': 'zz:zz:zz:zz:zz:zz',
'{#UPTME}': 583768},
{'{#HOSTNAME}': 'PA_BBB',
'{#IP}': '192.168.1.4',
'{#MAC}': 'ff:ff:ff:ff:ff:ff',
'{#UPTME}': 1086962},
{'{#HOSTNAME}': 'PA_jjj',
'{#IP}': '192.168.1.3',
'{#MAC}': 'cc:cc:cc:cc:cc:cc',
'{#UPTME}': 1158902}]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505423.html
上一篇:Python-如果子字串匹配(正則運算式),我如何從串列中洗掉字串?
下一篇:從串列python中添加和洗掉值