繁体   English   中英

在字典的for循环中解压缩多个变量

[英]Unpacking multiple variables in a for loop over a dictionary

有人可以告诉我为什么我在以下代码中遇到拆包错误吗?

bucket = {
        'a': 'Joe',
        'b': 'Brooke',
        'c': 'Scott',
        'd': 'Sam',
}

for i, kv in enumerate(bucket):
    k, v = kv
    print i, k, v

因为kv不能解包,所以它是字典的键之一。 也许您的意思是:

for i, k in enumerate(bucket):
    print i, k, bucket[k]

遍历dict仅返回键,如果想要键值对,则必须使用dict.items()

for i, kv in enumerate(bucket.items()):
    k, v = kv
    print i, k, v

甚至更好的是,直接在循环中解压缩:

for i, (k, v) in enumerate(bucket.items()):
    print i, k, v

还要注意,这些物品不会通过钥匙订购。 如果希望它们排序,请使用具有关键功能的collections.OrderedDictsorted()

这不是正确的方法,您认为您可以分成键值之类的片段, but kv等于字典键。 不像那样。 kv是带您的dict键的变量。

bucket = {
        'a': 'Joe',
        'b': 'Brooke',
        'c': 'Scott',
        'd': 'Sam',
}

for i, kv in enumerate(bucket):
    print (i,kv)

>>> 
0 a
1 c
2 b
3 d
>>> 

您会看到,这里只有键。 解决方法是;

bucket = {
        'a': 'Joe',
        'b': 'Brooke',
        'c': 'Scott',
        'd': 'Sam',
}

for i, kv in enumerate(bucket):
    print (i,kv,bucket[kv])
>>> 
0 c Scott
1 a Joe
2 d Sam
3 b Brooke
>>> 
for k, v in bucket.iteritems():
    print k, v

a Joe  
c Scott  
b Brooke  
d Sam

暂无
暂无

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

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