我有一些與我寫的程式有關的問題。我的資料如下
data = ['Sectors', 'Country', 'Region', 6, 9, 4, 2, 3, 0]
columns = {'lines': '國家', '地區': 'Regions', 's sectors': 'Sectors'}。
column_size = 3。
為了根據提供的列數轉換為一個特定的字典,我使用策略寫了2個函式。第一個函式是轉換為一個二維串列,其中二維串列的第一項提供了列名,而其他專案代表值。第二個函式根據鍵和值所處的位置,給出預期的輸出
。Output: {'Sectors': [6, 2], 'Countries': [9, 3], 'Regions': [4, 0]}。
下面是我的代碼
def converting_to_two_dimensional_list(data: list, column_size: int)。)
list_two_dimensional = [] 。
for l in range(0, len(資料), column_size)。
緩沖區 = []
for j in range(l, l column_size)。
buffer.append(data[j])
list_two_dimensional.append(buffer)
return list_two_dimensional
def final_result(list_two_dimensional: list)。)
final_output = {}。
for c in list_two_dimensional[0] 。
緩沖區 = []
for d in range(len(list_two_dimensional[1: ] )。
buffer.append(list_two_dimensional[1:] [d][list_two_dimensional[0].index(c)])
final_output.update({c:buffer})
return final_output.
if __name__ == '__main__'/span>:
result = final_result(converting_to_two_dimensional_list(data, column_size))
print(result)
雖然我得到了預期的輸出,但是否有辦法用理解力來表示這些函式,如果沒有,是否有任何優化的方法來獲得相同的輸出?
謝謝
uj5u.com熱心網友回復:
你可以使用串列理解法
data = ['Sectors', 'Country', 'Regions', 6, 9, 4, 2, 3, 0]
column_size = 3 ]
d = data[column_size:]
output = dict(zip( data[0: column_size], [[d[j] for j in range(i, len(d), column_size)] for i in range(column_size)])
print(output) #{'Sectors' : [6, 2], '國家': [9, 3], 'Regions': [4, 0]}
uj5u.com熱心網友回復:
有一些選項你可以用來使其更加pythonic,是的。雖然很容易做出一個pythonic版本來得到你想要的輸出,但我不確定你想解決的是哪個一般的問題,所以將在下面提供幾個不同選項的函式示例。
我能想到的第一個選項是,你為每個鍵設定了一個固定數量的元素,你可以通過以下方式實作:
def format_data(data。num_keys, num_values = 2)。)
# 使用切分來獲得串列的兩半。
keys, values = data[:num_keys], data[num_keys:] 。
# 使用enumerate和num_values來迭代鍵值并獲得值。
return {key: values[num_values * i : num_values * (i 1)] for i, key in enumerate(keys)}。
我能想到的第二個方案與第一個方案類似,但你想在鍵之間平均分配值,因此如果你有2個鍵和8個值,每個鍵將得到4個值:
def format_data(data, num_keys)。
# 使用切分來獲得串列的兩半。
keys, values = data[:num_keys], data[num_keys:] 。
# 使用整數除法得到每個鍵的值的數量# 使用enumerate和num_values來迭代鍵并獲得值。
return {key: values[num_values * i : num_values * (i 1)] for i, key in enumerate(keys)}。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309348.html
標籤:
下一篇:將十六進制字串寫進二進制檔案
