为了账号安全,请及时绑定邮箱和手机立即绑定

如何从命令中提取特定值?

如何从命令中提取特定值?

慕运维8079593 2022-09-27 14:53:15
我喜欢提取特定的密钥并将它们存储在列表中。到目前为止,我能够从 MariaDB 读取并将行存储为字典(我更喜欢将输出设置为 JSON):import pymysqlimport simplejson as jsonimport collectionsimport credentials_globalconn = pymysql.connect(    host=credentials_global.mariadb_dev_ip_address,    user=credentials_global.mariadb_dev_username,    password=credentials_global.mariadb_dev_password,    port=credentials_global.mariadb_dev_port,    database=credentials_global.mariadb_dev_db_ticketing,)cursor = conn.cursor()cursor.execute("select a, b, c, d, e, f from master.orders where c = 215")rows = cursor.fetchall()objects_list = []for row in rows:    d = collections.OrderedDict()    d["a"] = row[0]    d["b"] = row[1]    d["c"] = row[2]    d["d"] = row[3]    d["e"] = row[4]    d["f"] = row[5]    objects_list.append(d)j = json.dumps(objects_list)print(j)这将生成输出:[    {        "a": 4153,        "b": "NO_EFFECT",        "c": "none",        "d": "Medium",        "e": 1,        "f": "No Remarks",    },    {        "a": 4154,        "b": "SIGNIFICANT",        "c": "none",        "d": "Low",        "e": 1,        "f": "Test Message",    },]我喜欢提取 的所有出现。我试过:ffor key, value in d.items():    print(value)此输出:4153NO_EFFECTnoneMedium1No Remarks4154SIGNIFICANTnoneLow1Test Message我更喜欢的是只提取,以便输出是这样的(我假设序列是维护的)。有人可以帮助我如何实现或在哪里寻找吗?f[No Remarks, Test Message]
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

for obj in objects_list:
   print(obj['f'])

命令定义保持密钥的顺序(a b c ...此输出中的顺序来自objects_list中的顺序。

要在输出列表中获取它:

only_f_fields = [ obj['f'] for obj in objects_list ]


查看完整回答
反对 回复 2022-09-27
?
心有法竹

TA贡献1866条经验 获得超5个赞

我认为您寻找的答案是

for key, value in d.items():    
    print(value[0]['f'])

列表中的第一个元素 0,以及该列表中字典中的元素 f。


查看完整回答
反对 回复 2022-09-27
?
茅侃侃

TA贡献1842条经验 获得超22个赞

假设收到的输出超过列表:

ex = [{"a": 4153, "b": "NO_EFFECT", "c": "none", "d": "Medium", "e": 1, "f": "No Remarks"},

 {"a": 4154, "b": "SIGNIFICANT", "c": "none", "d": "Low", "e": 1, "f": "Test Message"}]


我们可以执行两种方式,一种迭代通常不假设键顺序,另一种迭代不假设顺序。


通常迭代和检查(仅用于解释)

f_list = list()

for val in ex:

    for k, v in val.items():

        if k == "f":

           f_list.append(v)


print(f_list)

输出:

['No Remarks', 'Test Message']


有序字典保持键的顺序:

f_list = list()

for val in ex:

    f_list.append(val["f"])

print(f_list)

输出:

['No Remarks', 'Test Message']


查看完整回答
反对 回复 2022-09-27
  • 3 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号