[英]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.OrderedDict
或sorted()
。
这不是正确的方法,您认为您可以分成键值之类的片段, 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.