0

私はpythonが初めてで、いくつかのことを把握しようとしています。2 つのリストから辞書を作成したいと思います。私は2セットのデータを持っています:

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

これらは両方ともリストにあり、1 つは「人」、もう 1 つは「名前」です。これは、複数のファイルを実行してデータを取得するスクリプトで行います。各リストは、長さが異なり、データが異なります。基本的に、私がやりたいことは、次のようにデータを印刷することです。

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)

これまでのところ、スクリプトはうまく機能しており、2 つのリストを別々に印刷できます。一緒に印刷する方法がわからないので、代わりに辞書に保存することを考えていますが、その方法がよくわかりません。

4

7 に答える 7

5

使用できる2つのリストを印刷したいだけの場合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
于 2012-12-19T18:54:58.423 に答える
3

ここでは口述は必要ないと思います。リストの要素をペアにするには、単に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。何らかの理由で dict が必要な場合は、簡単に作成できます。

In [28]: dict(zip(person, name))
Out[28]: {1: 'Jimmy', 2: 'Mike', 3: 'Stanley', 4: 'Will'}
于 2012-12-19T18:54:54.797 に答える
2

初歩的なパイソンで。

people_dict = {}
for people in xml.iter('people'):
  person = people.find('person').text
  name = people.find('name').text
  people_dict[name] = person
于 2012-12-19T18:54:14.000 に答える
1

zip 組み込み関数を使用して dict を作成します。

dct = dict(zip(person, name))

次に、辞書を印刷するには、次のようにします。

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

幸運を

マイク

于 2012-12-19T18:54:59.493 に答える
0

Python 2.7以降を使用している場合は、Dict内包表記を使用できます。これらは特定の状況ではやり過ぎかもしれませんが、この問題を適切に把握して解決するための優れた手法です。

于 2012-12-19T18:59:23.053 に答える
0

それらを一緒に出力するだけでよい場合は、辞書は順序を維持しないため、辞書よりもタプルのリストの方が適している可能性があります。これを行う方法は次のとおりです。

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
于 2012-12-19T18:57:48.397 に答える
0

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
于 2012-12-19T18:58:07.880 に答える