2017-07-31 21 views
-3

以下のリストでは、それぞれの名前と電話番号をdbに挿入しようとしています。だから私は反復し、それを変数に代入し、それを挿入ステートメントで使用しようとしました。複数リストデータセットの各要素を変数に割り当てる方法は?

contactlist = [ 
    ['Siemens, Harper', '323-4149'], 
    ['Smith, Patti', '239-1212'], 
    ['Jackson, Janet', '313-1352'], 
    ['Manfredi, Ralph','872-2221'], 
    ['Thompson, Bobby', '365-2622'], 
    ['James, Lebron', '457-6223'], 
    ['Ziegler, Zig', '667-1101'], 
    ['Robbins, Tony', '329-2310'] 
] 

これは私がしようとしているものです:

a = [] 
for data in contactlist: 
    #print (data) 
    print (data[0]) 
    for d1 in data: 
     #print (d1) 
     a.append(d1) 
print (a) 
+3

可能な重複Python](https://stackoverflow.com/questions/952914/making-a-flat-list-ouリストの中のリストのリスト) – Turn

+0

あなたは 'db'を参照していますか? – Rahul

答えて

1

あなたがVARUNあなたを1としてfunctools

from functools import reduce  
reduce(lambda m,n: m+n,contanctlist) 
あなたのコード内の

>>> contactlist = [ 
... ['Siemens, Harper', '323-4149'], 
... ['Smith, Patti', '239-1212'], 
... ['Jackson, Janet', '313-1352'], 
... ['Manfredi, Ralph','872-2221'], 
... ['Thompson, Bobby', '365-2622'], 
... ['James, Lebron', '457-6223'], 
... ['Ziegler, Zig', '667-1101'], 
... ['Robbins, Tony', '329-2310'] 
... ] 
>>> a = reduce(lambda m,n: m+n,contactlist) 
>>> a 
['Siemens, Harper', '323-4149', 'Smith, Patti', '239-1212', 'Jackson, Janet', '313-1352', 'Manfredi, Ralph', '872-2221', 'Thompson, Bobby', '365-2622', 'James, Lebron', '457-6223', 'Ziegler, Zig', '667-1101', 'Robbins, Tony', '329-2310'] 

からreduce機能を使用することができますコメント

contactlist = [ 
    ['Siemens, Harper', '323-4149'], 
    ['Smith, Patti', '239-1212'], 
    ['Jackson, Janet', '313-1352'], 
    ['Manfredi, Ralph','872-2221'], 
    ['Thompson, Bobby', '365-2622'], 
    ['James, Lebron', '457-6223'], 
    ['Ziegler, Zig', '667-1101'], 
    ['Robbins, Tony', '329-2310'] 
] 

phone_list = [] 
person = [] 

for contact in contactlist: 
    phone_list.append(contact[1]) 
    person.append(contact[0]) 

print phone_list 
print person 
+0

私のコードに同じ出力がありますが、私の問題は個人の名前と電話番号を抽出したいです。 – Varun

+0

@ Varunは2つのリストを1つ、もう1つのリストは電話番号です – Kallz

+0

ありがとう:) @kallz – Varun

0

あなたの番号に間違ったアクセスがあります。あなたのcontactlistはリストのリストです。だからあなたはあなたのやり方のように各エントリにアクセスすることができます。あなたは数が必要な場合は、このようなそのデータの2番目のエントリを取る:

for data in contactlist: 
    name = data[0] 
    number = data[1] 
    print 'Name: %s, Number %s' %(name, number) 

代わりにあなたがあなたのデータベースにそれらを追加するには、変数を行う必要があるものは何でもできるエントリを印刷します。これを見ると

0

Inserting multiple rows in a single SQL query?、一つの方法はあなたのコマンドに

contactlist = [ 
    ['Siemens, Harper', '323-4149'], 
    ['Smith, Patti', '239-1212'], 
    ['Jackson, Janet', '313-1352'], 
    ['Manfredi, Ralph','872-2221'], 
    ['Thompson, Bobby', '365-2622'], 
    ['James, Lebron', '457-6223'], 
    ['Ziegler, Zig', '667-1101'], 
    ['Robbins, Tony', '329-2310'] 
] 

str([tuple(i) for i in contactlist])[1:-1] 

プリント

"('Siemens, Harper', '323-4149'), ('Smith, Patti', '239-1212'), ('Jackson, Janet', '313-1352'), ('Manfredi, Ralph', '872-2221'), ('Thompson, Bobby', '365-2622'), ('James, Lebron', '457-6223'), ('Ziegler, Zig', '667-1101'), ('Robbins, Tony', '329-2310')" 

しかし、必要はありませんPythonのドキュメントを見ての挿入文字列を作成することです。この 完全な例を考えてみましょう:https://docs.python.org/2/library/sqlite3.html):

import sqlite3 

contactlist = [ 
     ['Siemens, Harper', '323-4149'], 
     ['Smith, Patti', '239-1212'], 
     ['Jackson, Janet', '313-1352'], 
     ['Manfredi, Ralph','872-2221'], 
     ['Thompson, Bobby', '365-2622'], 
     ['James, Lebron', '457-6223'], 
     ['Ziegler, Zig', '667-1101'], 
     ['Robbins, Tony', '329-2310'] 
    ] 

conn = sqlite3.connect('example.db') 

c = conn.cursor() 

# Delete table 
c.execute('drop table if exists employees') 

# Create table 
c.execute('''CREATE TABLE employees 
      (name, number)''') 

# Insert a row of data 
c.executemany('INSERT INTO employees VALUES (?,?)', contactlist) 
# or 
# c.execute("INSERT INTO employees VALUES {}".format(str([tuple(i) for i in contactlist])[1:-1])) 

conn.commit() # Commit the changes 
conn.close() 

データベースは現在、次の行を持つ従業員と呼ばれるテーブルが含まれています:ただの提案

('Siemens, Harper', '323-4149') 
('Smith, Patti', '239-1212') 
('Jackson, Janet', '313-1352') 
('Manfredi, Ralph', '872-2221') 
('Thompson, Bobby', '365-2622') 
('James, Lebron', '457-6223') 
('Ziegler, Zig', '667-1101') 
('Robbins, Tony', '329-2310') 
0

しかしKallzのポストあなたのコメントで"上記の投稿にも同じ出力がありますが、個人の名前と電話番号を抽出したいのです。"

この場合、辞書を使用することができます。

Contacts={} 
Contacts['Barry']="184788174" 
Contacts['Stewart']="1515174" 
Contacts['Sarah']="1252358174" 

print(Contacts['Barry']) 

戻り値:

184788174 

またはすべてを表示するには:

Contacts={} 
Contacts['Barry']="184788174" 
Contacts['Stewart']="1515174" 
Contacts['Sarah']="1252358174" 


for data in Contacts: 
    print(data, ":") 
    print(Contacts[data], """ 
""") 

戻り値:中リストのリストのうちのフラットなリストを作る[の

Barry : 
184788174 

Stewart : 
1515174 

Sarah : 
1252358174 
関連する問題