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这解决了吗?如果是,请将答案标记为正确