枚举列表并打印字典的索引和选定值

时间:2017-11-04 17:44:34

标签: python list dictionary

我有以下示例代码:

contact_book = []

contact = {'Name:': 'Foo', 'Surname:': 'Bars', 'Adress:': 'Foostreet, 3',
           'Number:': '123456'}
contact2 = {'Name:': 'Boo', 'Surname:': 'Bark', 'Adress:': 'Boostreet, 31',
           'Number:': '6554321'}
contact3 = {'Name:': 'Coo', 'Surname:': 'Barf', 'Adress:': 'Coostreet, 32',
            'Number:': '999999'}

contact_book.append(contact)
contact_book.append(contact2)
contact_book.append(contact3)

print(list(enumerate(contact_book)))

输出是:

[(0, {'Name:': 'Foo', 'Surname:': 'Bars', 'Adress:': 'Foostreet, 3', 'Number:': '123456'}), (1, {'Name:': 'Boo', 'Surname:': 'Bark', 'Adress:': 'Boostreet, 31', 'Number:': '6554321'}), (2, {'Name:': 'Coo', 'Surname:': 'Barf', 'Adress:': 'Coostreet, 32', 'Number:': '999999'})]

我想仅输出联系人的索引位置,然后输出密钥'Name''Surname'的值。

[(0, {'Name:': 'Foo', 'Surname:': 'Bars',}), (1, {'Name:': 'Boo', 'Surname:': 'Bark'}), (2, {'Name:': 'Coo', 'Surname:': 'Barf'})]

如何仅访问NameSurname值以及联系人的索引位置?我用列表枚举尝试了它,但我也开放其他方法。

2 个答案:

答案 0 :(得分:1)

您可以构建仅包含列表推导中所需键的dicts,使用enumerate生成相应的索引,如下所示:

keys = ('Name', 'Surname')
lst = [(i, {k: d[k] for k in keys}) for i, d in enumerate(contact_book)]

答案 1 :(得分:0)

可以循环浏览每个联系人并获取如下值:

outlist = [] 
counter =0
for onedict in contact_book:
    oneitem = []
    oneitem.append(counter)
    oneitem.append( {"Name:":contact["Name:"], "Surname:":contact["Surname:"]} ) 
    outlist.append(oneitem)
    counter += 1

print(outlist)

输出:

[[0, {'Surname:': 'Bars', 'Name:': 'Foo'}], [1, {'Surname:': 'Bars', 'Name:': 'Foo'}], [2, {'Surname:': 'Bars', 'Name:': 'Foo'}]]
相关问题