1

タプルのタプルとして値とキーを指定して辞書を作成する関数をコーディングしようとしています。例えば

long2wide ( ((" apple ","red "),(" banana "," yellow "),(" banana "," green "),
(" apple "," green "),(" cherry "," red "))
, (" fruit ", " colour ") )

戻り値

{'fruit': ['apple', 'banana', 'banana', 'apple', 'cherry'], 'colour': ['red', 'yellow', 'green', 'green', 'red']}

これが私が今持っている(間違った)コードです:

def long2wide(data, headers):
    dictionary = {}
    for entry in headers:
        for i in range(len(data)): #Iterate through each row of data
            for j in range(len(data[0])): #Iterate through each column of data
                dictionary[(headers)] = data[i][j]
    return dictionary

私の現在の出力は {'fruit': 'red', 'color': 'red'} です

:(

誰かがこれをデバッグ/解決するのを手伝ってくれたら本当にありがたいです. ありがとう!!

4

6 に答える 6

0

タプルをデータフレームにロードしてから辞書に戻すことができます

data=(
    (" apple ","red "),
    (" banana "," yellow "),
    (" banana "," green "),
    (" apple "," green "),
    (" cherry "," red ")
)
headers= (" fruit ", " colour ") 

df=pd.DataFrame(data,columns=headers)
a_dict=df.to_dict()
for key,item in a_dict.items():
   print(key)
   for i in np.arange(len(item)):
       print(item[i])

出力:

fruit 
  apple 
  banana 
  banana 
  apple 
  cherry 
colour 
  red 
  yellow 
  green 
  green 
  red 

または、データのキーと値のペアを直接ディクショナリにロードし、ヘッダーをインデックスとして使用できます

  headers= ((" fruit ",0),(" colour ",1)) 

  dct = dict((y, x) for x, y in data)        
  print(dct)

出力:

  {'red ': ' apple ', ' yellow ': ' banana ', ' green ': ' apple ', ' red ': ' cherry '}
于 2021-05-28T14:28:39.320 に答える