我有一个包含三个词典的列表,如下所示:
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
我不想打印词典本身的键或值。
这方面的任何建议都会有所帮助
答案 0 :(得分:2)
Python中的对象不具有名称",它们与变量绑定。请考虑以下代码:
lst1 = [3, [4, 5, 6], 7]
lst2 = lst1
"姓名"列表(可以lst1
或lst2
访问)。列表的第二个元素的名称是什么(只有列表存储对子列表的引用)。
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])