簡體   English   中英

從兩個列表創建一個字典,然后在python中打印數據

[英]Create a dictionary from two lists and then print the data in python

我是python的新手,正在嘗試掌握一些東西。 我想從兩個列表創建一個字典。 我有兩組數據:

Person  |    Name
--------|--------
1       |   Jimmy
2       |    Mike
3       | Stanley
4       |    Will

我在列表中都包含了這兩個名稱,一個稱為“人”,另一個稱為“名稱”。 我在一個腳本中執行此操作,該腳本運行多個文件以提取數據。 每個列表的長度不同,其中包含不同的數據。 本質上,我想做的是像這樣打印數據:

1 \t Jimmy
2 \t Mike
3 \t Stanley
4 \t Will

我從xml文件中提取數據,這是我用來提取數據的代碼:

for people in xml.iter('people'):
  person.append(people.find('person').text)
  name.append(people.find('name').text)

到目前為止,該腳本運行良好,我可以分別打印出兩個列表。 我不知道該怎么做,是將它們一起打印出來,所以我的想法是將它們存儲到字典中,但是我真的不知道該怎么做。

如果您只想打印兩個列表,則可以使用zip (doc)

for num,name in zip(num_list,name_list):
    print str(num) + '\t' + name

您可以使用相同的形式將對放入字典中(擁有列表后)

name_dict = {}
for num,name in zip(num_list,name_list):
    name_dict[num] = name

然后打印

for num,name in name_dict.iteritems():
    print str(num) + '\t' + name

我認為您不需要在此發布命令。 要將列表中的元素配對在一起,只需使用zip

In [27]: zip(person, name)
Out[27]: [(1, 'Jimmy'), (2, 'Mike'), (3, 'Stanley'), (4, 'Will')]

例如,

person = [1,2,3,4]
name = ['Jimmy', 'Mike', 'Stanley', 'Will']
for p, n in zip(person, name):
    print('{p}\t{n}'.format(p = p, n = n))

產量

1   Jimmy
2   Mike
3   Stanley
4   Will

PS。 如果由於某種原因您確實想要一個字典,那么也很容易形成:

In [28]: dict(zip(person, name))
Out[28]: {1: 'Jimmy', 2: 'Mike', 3: 'Stanley', 4: 'Will'}

在基本的python中。

people_dict = {}
for people in xml.iter('people'):
  person = people.find('person').text
  name = people.find('name').text
  people_dict[name] = person

使用內置的zip函數創建字典:

dct = dict(zip(person, name))

然后要打印字典,您可以執行以下操作:

for k in dct:
    print '%s\t%s' % (k, dct[k])

祝好運

麥克風

如果您需要做的就是將它們一起打印出來,那么元組列表可能比字典更合適,因為字典不維護順序。 這是您可以執行的操作:

people = []
for person in xml.iter('people'):
    people.append((person.find('person').text, person.find('name').text))

然后打印:

for p, name in people:
    print p + '\t' + name

使用zip內置功能。

In [3]: person = range(1,5)

In [4]: name = ['Jimmy', 'Mike', 'Stanley', 'Will']

In [5]: zip(person, name)
Out[5]: [(1, 'Jimmy'), (2, 'Mike'), (3, 'Stanley'), (4, 'Will')]

In [6]: for p,n in zip(person, name):
   ...:     print p, '\t', n
   ...:     
1   Jimmy
2   Mike
3   Stanley
4   Will

如果您使用的是Python 2.7或更高版本,則可以使用Dict理解 對於您的特定情況,它們可能會顯得過大,但它們是很好地了解和解決此問題的好方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM