繁体   English   中英

字典和循环

[英]Dictionaries and For Loops

说以下是我们的代码:

d = {"Happy":"Clam", "Sad":"Panda"}
for i in d:
    print(i)

现在print(i )仅会打印出键,但是如何更改它以打印出值呢?

d = {"Happy":"Clam", "Sad":"Panda"}
for i in d:
    print(i, d[i]) # This will print the key, then the value

要么

d = {"Happy":"Clam", "Sad":"Panda"}
for k,v in d.items(): # A method that lets you access the key and value
    print(k,v) # k being the key, v being the value
d = {"Happy":"Clam", "Sad":"Panda"}
for i in d:
        print(i, d[i])

给我:

('Sad', 'Panda')
('Happy', 'Clam')

Python dict有许多可用于获取键,值或两者的列表的方法。

要回答您的问题,可以使用d.values()列表:

d = {"Happy":"Clam", "Sad":"Panda"}
for v in d.values():
   print(v)

输出:

Clam
Panda

但是, items()方法特别有用,因此应予以提及。

d = {"Happy":"Clam", "Sad":"Panda"}
for k, v in d.items():
   print(k, v)

将打印:

Happy Clam
Sad Panda

关于文档中物品订购的警告:

CPython实现细节:键和值以任意顺序列出,该顺序是非随机的,在Python实现中会有所不同,并且取决于字典的插入和删除历史。

一种简单的方法是为每个循环使用

for value in d.values:
    print(value)

您也可以制作一个发电机。 生成器是可迭代的序列,您可以停止和继续。

def generator(input):
    for value in input.values():
        yield value

gen = generator(d);
print(d.next()) // Clam

// Doing complex calculations
answer = 21 + 21

print(d.next()) // Panda

另一种方法是使用高阶函数“ map”。

map( print, d.values() )

// You can also use generators ;)
map( print, gen )

最后,在python 3中,字典现在支持压缩。 字典压缩对于创建字典非常有用,而对于打印每个条目的值的内容则不那么重要。 值得一试,因为python中的所有内容都是字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM