在Python中列出一个列表中的字典名称

时间:2015-08-22 17:01:17

标签: python dictionary

我有一个包含三个词典的列表,如下所示:

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]

我想遍历列表并仅打印字典的名称

lloyd
alice
tyler

我不想打印词典本身的键或值。

这方面的任何建议都会有所帮助

5 个答案:

答案 0 :(得分:2)

Python中的对象不具有名称",它们与变量绑定。请考虑以下代码:

lst1 = [3, [4, 5, 6], 7]
lst2 = lst1

"姓名"列表(可以lst1lst2访问)。列表的第二个元素的名称是什么(只有列表存储对子列表的引用)。

dir()函数可以为您提供命名空间中名称的列表,但这是您可以做的最好的事情。

答案 1 :(得分:1)

if alert.subviews.count > 0 {
   alert.subviews[0].removeFromSuperview()
}

答案 2 :(得分:1)

我知道这已经很老了,但我相信我可以解决所提出的问题。这可以通过将这些词典嵌套到另一本词典中来完成。

采用原始代码:

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

我只是在学习自己,所以希望这对像堆栈溢出社区这样的人有所帮助!

答案 3 :(得分:0)

标准的dict类中没有__name__或者这样的attr。(函数有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']

答案 4 :(得分:0)

for x in dict.items():
    print(x[0])