问题 1.)
for a,a in dict.items():
print a
为什么上面打印值,如果我打印 a,a - 显然两个值都打印了两次。如果我输入了 a,b,我会迭代 (key,value) 对,所以我逻辑上认为我现在正在迭代 (key,key) 对,因此会打印键而不是值。很抱歉这些基本问题只是在解释器中玩弄并试图弄清楚。
问题 2.)
for key,value in dict.items():
print "%s is the key that corresponds to the value %s"%(key,value)
上面的例子对我来说很有意义,但为什么:
for key in dict.items():
print "%s is the key that corresponds to the value %s"%(key)
产生相同的结果?是因为即使我们没有在 for
语句中将元组解包为两个单独的变量,它在字符串格式化程序中通过key
调用 - 基本上是 %(key)
= (key,value)
?
最佳答案
Q1:
考虑以下几点:
>>> d = {"a": 1, "b": 2, "c": 3}
>>> xs = d.items()
>>> a, a = xs[0]
>>> print a, a
1 1
这实际上是正在发生的事情。您正在将每个 (key, value)
对解包到 (a, a)
中,有效地以 (value, value)
结束。对 key 的引用丢失。
这等同于:
>>> a, a = 1, 2
>>> print a, a
2, 2
解包期间解释器中发生了什么:
a
变为1
。a
变为2
。
Q2:
考虑以下几点:
>>> a, b = ("a", 1)
>>> print "%s=%s" % (a, b)
a, 1
>>> x = ("a", 1)
>>> print "%s=%s" % x
a, 1
两者实际上是一样的。由于您的字符串插值需要 (a, b)
和 x
(2 个值的元组)的两个元组,因此可以有效地满足这一点。
关于python - 两个基本的 Python 字典问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24750060/