[英]Print ONLY Dictionary Name from Inside a List in Python
我有一個包含三個字典的列表,如下所示:
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
students = [lloyd, alice, tyler]
我想遍歷列表並只打印字典的名稱
IE
lloyd
alice
tyler
我不想打印字典本身的鍵或值。
在這方面的任何建議都會有所幫助
Python 中的對象沒有“名稱”,它們綁定到變量。 考慮以下代碼:
lst1 = [3, [4, 5, 6], 7]
lst2 = lst1
列表的“名稱”是什么(它可以作為lst1
或lst2
訪問)。 列表的第二個元素的名稱是什么(只有列表存儲對子列表的引用)。
dir()
函數可以為您提供命名空間中名稱的列表,但這是您所能做的最好的事情。
for i in students:print(i['name'])
我知道這是舊的,但我相信我有一個解決問題的方法。 這可以通過將這些字典嵌套到另一個字典中來實現。
取原代碼:
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
students = [lloyd, alice, tyler]
不使用字典列表,而是創建一個名為 users 的嵌套字典,並將用戶的字典作為成員。
users = {
'lloyd' : {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
},
'alice' : {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
},
'tyler' : {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
}
然后是一個簡單的 for 循環來打印用戶名...
for username, user_info in users.items():
print(f"{username.title()}")
這給出了所需的輸出..
Lloyd
Alice
Tyler
我只是在學習自己,所以我希望這可以幫助像堆棧溢出社區這樣幫助過我的人!
在標准的 dict 類中沒有__name__
或這樣的屬性。(函數有 func. func_name
)我相信會有一些更好的實現,但我的解決方案如下:
創建一種具有一些附加屬性的新型 dict ..
class myspecial_dict(dict):
def __init__(self,Name,**kwargs):
super(myspecial_dict,self).__init__(kwargs)
self.dictname=Name
mys=myspecial_dict("lloyd",**lloyd)
print mys.dictname
print mys['quizzes']
打印出來:
lloyd
[88.0, 40.0, 94.0]
如果您想為所有人執行此操作:
dicts =[lloyd,alice,tyler]
dictnames=["lloyd","alice","tyler"]
print [myspecial_dict(x,**y).dictname for x,y in zip(dictnames,dicts) ]
產生:
['lloyd', 'alice', 'tyler']
for x in dict.items():
print(x[0])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.