Python列表和字典
如何访问列表中的词典Python列表和字典,python,Python,如何访问列表中的词典 c = [{'team':2000,'name':'a'}, {'team':3000,'name':'b'}] values = [] for key, value in c.iteritems(): values.append((key, value)) print values 我尝试使用iteritems访问列表,但指定列表没有iteritems时出错。然后,我尝试使用for循环,但仍然得到一个错误,指定列表索引必须是整数我不确定您想要的输出是什么
c = [{'team':2000,'name':'a'}, {'team':3000,'name':'b'}]
values = []
for key, value in c.iteritems():
values.append((key, value))
print values
我尝试使用
iteritems
访问列表,但指定列表没有iteritems
时出错。然后,我尝试使用for循环,但仍然得到一个错误,指定列表索引必须是整数我不确定您想要的输出是什么,但问题是c
是dict()
的list()
,而不是dict()
。因此,如果要循环列表中每个dict中的每个键和值,则需要两个循环:
In [85]: for dictionary in c:
....: for key, value in dictionary.iteritems():
....: values.append((key, value))
....: print values
....:
[('name', 'a')]
[('name', 'a'), ('team', 2000)]
[('name', 'a'), ('team', 2000), ('name', 'b')]
[('name', 'a'), ('team', 2000), ('name', 'b'), ('team', 3000)]
您还可以通过列表理解来简化此过程:
In [96]: for dictionary in c:
values.extend((key, value) for key, value in dictionary.iteritems())
....:
In [97]: values
Out[97]: [('name', 'a'), ('team', 2000), ('name', 'b'), ('team', 3000)]
或者,进一步简化它,因为list.extend()
可以接受任何iterable:
In [112]: for dictionary in c:
values.extend(dictionary.iteritems())
.....:
In [113]: values
Out[113]: [('name', 'a'), ('team', 2000), ('name', 'b'), ('team', 3000)]
最后,我们可以使用一行代码填充值
,这基本上将多个iterable“扁平化”为一个iterable(谢谢!):
我不确定您想要的输出是什么,但问题是c
是dict()
s的list()
,而不是dict()
。因此,如果要循环列表中每个dict中的每个键和值,则需要两个循环:
In [85]: for dictionary in c:
....: for key, value in dictionary.iteritems():
....: values.append((key, value))
....: print values
....:
[('name', 'a')]
[('name', 'a'), ('team', 2000)]
[('name', 'a'), ('team', 2000), ('name', 'b')]
[('name', 'a'), ('team', 2000), ('name', 'b'), ('team', 3000)]
您还可以通过列表理解来简化此过程:
In [96]: for dictionary in c:
values.extend((key, value) for key, value in dictionary.iteritems())
....:
In [97]: values
Out[97]: [('name', 'a'), ('team', 2000), ('name', 'b'), ('team', 3000)]
或者,进一步简化它,因为list.extend()
可以接受任何iterable:
In [112]: for dictionary in c:
values.extend(dictionary.iteritems())
.....:
In [113]: values
Out[113]: [('name', 'a'), ('team', 2000), ('name', 'b'), ('team', 3000)]
最后,我们可以使用一行代码填充值
,这基本上将多个iterable“扁平化”为一个iterable(谢谢!):
“c”不是字典,因此iteritems()将不起作用。首先遍历列表以隔离字典
>>> c = [{'team':2000,'name':'a'}, {'team':3000,'name':'b'}]
... for i in c:
... for k,v in i.items():
... print "key : "+str(k)+' *** '+ "value : "+str(v)
... key : name *** value : a
... key : team *** value : 2000
... key : name *** value : b
... key : team *** value : 3000
“c”不是字典,因此iteritems()将不起作用。首先遍历列表以隔离字典
>>> c = [{'team':2000,'name':'a'}, {'team':3000,'name':'b'}]
... for i in c:
... for k,v in i.items():
... print "key : "+str(k)+' *** '+ "value : "+str(v)
... key : name *** value : a
... key : team *** value : 2000
... key : name *** value : b
... key : team *** value : 3000
试试这个:
c = [{'team':2000,'name':'a'}, {'team':3000,'name':'b'}]
values = []
for row in c:
for key, value in row.iteritems():
if key == 'name':
values.append((key, value))
print(values)
# gives this
# [('name', 'a'), ('name', 'b'),]
试试这个:
c = [{'team':2000,'name':'a'}, {'team':3000,'name':'b'}]
values = []
for row in c:
for key, value in row.iteritems():
if key == 'name':
values.append((key, value))
print(values)
# gives this
# [('name', 'a'), ('name', 'b'),]
@MoonCheesez他正在使用python 2.x,obviously@DaniilRyzhkov糟糕的是,我没有注意到print
语句,速度太快,无法判断@巴拉:你能把你使用的代码包括进来吗?它给了你一个错误“列表索引必须是整数”?你对你的问题期望的结果是什么?嘿,谢谢,我知道了。@MoonCheesez他在使用python 2.x,obviously@DaniilRyzhkov糟糕的是,我没有注意到print
语句,速度太快,无法判断@巴拉:你能把你使用的代码包括进来吗?它给了你一个错误“列表索引必须是整数”?你对你的问题期望的结果是什么?嘿,谢谢,我知道了。谢谢!爱你的名字,顺便说一句,那是我的昵称;)通过直接使用iteritems
中的元组,而不是解包和重新打包它们-values.extend(dictionary.iteritems())
,您可以进一步简化它。使用itertools,您可以:values=list(chain.from_iterable(d.iteritems()表示c中的d))
values.extend(dictionary.iteritems())
也有同样的效果,谢谢!爱你的名字,顺便说一句,那是我的昵称;)通过直接使用iteritems
中的元组,而不是解包和重新打包它们-values.extend(dictionary.iteritems())
,您可以进一步简化它。使用itertools,您可以:values=list(chain.from_iterable(d.iteritems()表示c中的d))
values.extend(dictionary.iteritems())
执行相同的操作当我运行此代码时会在打印值中获取语法错误。您能帮助我消除此错误吗?我还希望我的输出只打印名称。名字:一个名字:b@Bala这解决了吗?如果是这样的话,当我运行此代码时,请将答案标记为correctHi将在打印值中获取语法错误。您能帮助我消除此错误吗。另外,我希望我的输出只打印名称。名字:一个名字:b@Bala这解决了吗?如果是,请将答案标记为正确