簡體   English   中英

僅從 Python 中的列表中打印字典名稱

[英]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

列表的“名稱”是什么(它可以作為lst1lst2訪問)。 列表的第二個元素的名稱是什么(只有列表存儲對子列表的引用)。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM