亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

結果列表到元組(如描述中所述,使用 tuple 函數)并且結果元組需要位于列表中

結果列表到元組(如描述中所述,使用 tuple 函數)并且結果元組需要位于列表中

月關寶盒 2024-01-12 10:36:48
我想檢查輸入的密碼是否與數據庫中存儲的密碼相同,但是當我使用它時,bcrypt.checkpw()它會返回一個錯誤,指出它需要一個字符串或字節,因為 SQL 查詢返回一個元組。我找不到將數據庫響應轉換為元組中的字節以使其兼容的方法。sql = ''' SELECT password FROM user_data WHERE username=? '''username = input('Input username: ')password = bytes(input('Input Password: '), encoding='utf-8')cur = conn.cursor()cur.execute(sql, (username,))rows = cur.fetchall()for row in rows:    if bcrypt.checkpw(password, row):        details = (user_id, username, password)        print('logged in')        return details        break
查看完整描述

4 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

def compress(data):

    result = []    

    keys = tuple(data[0].keys()) # the keys

    result.append(keys)

    result2 = []

    result2.append(tuple([data[0][key] for key in keys]))

    result2.append(tuple([data[1][key] for key in keys[::-1]]))

    result.append(result2)

    return tuple(result)


data = [

    {"a": 1, "b": 2, "c": 3},

    {"a": 4, "c": 6, "b": 5}

]


print(compress(data))

印刷:


(('a', 'b', 'c'), [(1, 2, 3), (6, 5, 4)])


查看完整回答
反對 回復 2024-01-12
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

應該


def compress(data):

    res = []

    for idx, sub in enumerate(data, start=0):

        if idx == 0:

            res.append(tuple(sub.keys()))

            res.append([])

            res[-1].append(tuple(sub.values()))

        else:

            res[-1].append(tuple(sub.values()))

    return tuple(res)


查看完整回答
反對 回復 2024-01-12
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

所以我創建了你想要的東西,你可以把它放在一個函數中,如果你愿意的話


data = [

    {"a": 1, "b": 2, "c": 3},

    {"a": 4, "c": 6, "b": 5}

]


keys = [[],[]]

for d in data:

    items = list(d.items())

    l = []

    for i in items:

        l.append(i[1])

        if i[0] not in keys[0]:

            keys[0].append(i[0])

        else:

            continue

    keys[1].append(tuple(l))


keys = tuple(keys)


查看完整回答
反對 回復 2024-01-12
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

使用列表理解:


def compress(data):

  keys = tuple(sorted(data[0].keys()))

  values = [tuple(d[k] for k in keys) for d in data]

  return (keys, values)


>>> compress([{"a": 1, "b": 2, "c": 3},{"a": 4, "c": 6, "b": 5}])

(('a', 'b', 'c'), [(1, 2, 3), (4, 5, 6)])

可選:缺少鑰匙

如果某些字典中可能缺少某些鍵,您可以使用所有字典中的所有鍵,然后使用 刪除重復的鍵set,然后使用d.get(k, default_value)代替d[k]:


def compress(data, default_value=None):

  keys = tuple(sorted(set(k for d in data for k in d.keys())))

  values = [tuple(d.get(k, default_value) for k in keys) for d in data]

  return (keys, values)


>>> data = [{'a':1, 'b': 2, 'c': 3}, {'a':11, 'b':12, 'd':14}]

>>> compress(data, 0)

(('a', 'b', 'c', 'd'), [(1, 2, 3, 0), (11, 12, 0, 14)])

可選:存儲此數據的另一種方式

您可以將此字典列表重構為列表字典:


def refactor(data):

  keys = data[0].keys()

  return { k: [d[k] for d in data] for k in keys }


>>> refactor([{"a": 1, "b": 2, "c": 3},{"a": 4, "c": 6, "b": 5}])

{'a': [1, 4], 'b': [2, 5], 'c': [3, 6]}

同樣,您可以小心丟失密鑰:


def refactor(data):

  keys = set(k for d in data for k in d.keys())

  return { k: [d[k] for d in data if k in d] for k in keys }


>>> refactor([{'a':1, 'b': 2, 'c': 3}, {'a':11, 'b':12, 'd':14}])

{'d': [14], 'a': [1, 11], 'c': [3], 'b': [2, 12]}


查看完整回答
反對 回復 2024-01-12
  • 4 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號