我正在尝试将Python字典转换为Python列表,以便执行一些计算。
#My dictionary
dict = {}
dict['Capital']="London"
dict['Food']="Fish&Chips"
dict['2012']="Olympics"
#lists
temp = []
dictList = []
#My attempt:
for key, value in dict.iteritems():
aKey = key
aValue = value
temp.append(aKey)
temp.append(aValue)
dictList.append(temp)
aKey = ""
aValue = ""
这是我的尝试……但我不知道是怎么回事?
你应该使用dict.items()。
这里有一个简单的解决方案:
[(k,v) for k,v in dict.items()]
和结果:
[('Food', 'Fish&Chips'), ('2012', 'Olympics'), ('Capital', 'London')]
或者你可以
l=[]
[l.extend([k,v]) for k,v in dict.items()]
for:
['Food', 'Fish&Chips', '2012', 'Olympics', 'Capital', 'London']
也许你只是想要这样:
dictList = dict.items()
你的方法有两个问题。首先,你在引号中使用key和value,它们是字母“key”和“value”的字符串,与变量名称无关。此外,您还可以不断向“临时”列表中添加元素,并且永远不会删除之前迭代中已经存在的旧元素。确保在每次迭代中都有一个新的空临时列表,并使用键和值变量:
for key, value in dict.iteritems():
temp = []
aKey = key
aValue = value
temp.append(aKey)
temp.append(aValue)
dictList.append(temp)
还要注意,如果没有临时变量,这可以写得更短(并且在Python 3中使用items()而不是iteritems()):
for key, value in dict.items():
dictList.append([key, value])
>>> a = {'foo': 'bar', 'baz': 'quux', 'hello': 'world'}
>>> list(reduce(lambda x, y: x + y, a.items()))
['foo', 'bar', 'baz', 'quux', 'hello', 'world']
a.items()返回一个元组列表。将两个元组加在一起会得到一个包含所有元素的元组。因此,约简创建了一个包含所有键和值的元组,然后list(…)从中生成一个列表。