get () в цикле for - PullRequest
       2

get () в цикле for

0 голосов
/ 09 июля 2020

Я пытаюсь получить значения для ключей product и orderNumber. Когда я делаю это с помощью оператора product, order = mydict.get("product"), mydict.get("orderNumber"), он работает. Однако, если я попробую это сделать в al oop для получения дополнительных данных, вы получите ошибку.

Пожалуйста, сообщите Спасибо

mylist = [{'dependency': {'dependencyType': 'Rides On', 'orderActionType': 'PR', 'orderNumber': '123456789', 'product': 'MIS'}, 'latestOrderVersion': '1', 'mainComponentServiceType': 'MISM', 'orderActionType': 'PR', 'orderNumber': '987654321', 'parentRelation': 'NA', 'product': 'MIS Access'}]
mydict  = {}
for line in mylist:
    mydict.update(line)

print(mydict)
print(type(mydict))

product, order = mydict.get("product"), mydict.get("orderNumber")
print(product,order)

for key in mydict:
    product = key.get("product")
    if not product:
        continue
    print(product)

Вывод:

{'dependency': {'dependencyType': 'Rides On', 'orderActionType': 'PR', 'orderNumber': '123456789', 'product': 'MIS'}, 'latestOrderVersion': '1', 'mainComponentServiceType': 'MISM', 'orderActionType': 'PR', 'orderNumber': '987654321', 'parentRelation': 'NA', 'product': 'MIS Access'}
<class 'dict'>
MIS Access 987654321
Traceback (most recent call last):
  File "C:/Users/mike/handle_rt_iwant_v5.py", line 15, in <module>
    product = key.get("product")
AttributeError: 'str' object has no attribute 'get'

Process finished with exit code 1

Ответы [ 3 ]

0 голосов
/ 09 июля 2020

используйте dictionary.item () для итерации в циклах для словаря в python 3 версии

  mylist = [{'dependency': {'dependencyType': 'Rides On', 'orderActionType': 'PR', 'orderNumber': '123456789', 'product': 'MIS'}, 'latestOrderVersion': '1', 'mainComponentServiceType': 'MISM', 'orderActionType': 'PR', 'orderNumber': '987654321', 'parentRelation': 'NA', 'product': 'MIS Access'}]
    mydict  = {}
    for line in mylist:
        mydict.update(line)
    
    print(mydict)
    print(type(mydict))
    
    product, order = mydict.get("product"), mydict.get("orderNumber")
    print(product,order)
    


    for key in mydict.items():
        ke = key[0]
        val = key[1]
        if "product" in ke:
            print(ke)
            print(val)

Другой метод

  for key, value in mydict.items():  
        if key == "product":
            print(value)
0 голосов
/ 16 июля 2020
                product_dict = my_list[0]
                result = {}
                for key, value in product_dict.items():
                    if isinstance(value, list):
                        for item in value:
                            if isinstance(item, dict):
                                for key, value in item.items():
                                    if keys == 'orderNumber':
                                        result.update({keys: values})
                                    elif values == 'MIS':
                                        values = result.get("orderNumber")
                                        result.update({'MIS': values})
                                    else:
                                        continue
                            else:
                                continue
                    else:
                        if key == 'orderNumber':
                            result.update({key: value})
                        elif value == 'MIS':
                            value = result.get("orderNumber")
                            result.update({'MIS': value})
                        else:
                            continue

Спасибо всем, я смог исправить использование get () и значений fetch для ключей product и orderNumber, используя приведенный выше фрагмент кода. Спасибо за лидерство, оцените его!

РЕЗУЛЬТАТ:

result = result.get('MIS')
0 голосов
/ 09 июля 2020

Уже говорилось, что вы пытаетесь использовать метод dict для строки. Я не уверен, что вы хотите получить в результате, но можете ли вы искать что-то вроде этого?

mylist = [
    {
        'dependency':
         {
             'dependencyType': 'Rides On',
             'orderActionType': 'PR',
             'orderNumber': '123456789',
             'product': 'MIS'
         },
        'latestOrderVersion': '1',
        'mainComponentServiceType': 'MISM',
        'orderActionType': 'PR',
        'orderNumber': '987654321',
        'parentRelation': 'NA',
        'product': 'MIS Access'
    }
]

if mylist[0].get("product", False):
    print(mylist[0]["product"])
if mylist[0].get("orderNumber", False):
    print(mylist[0]["orderNumber"])

for value in mylist[0].values():
    if isinstance(value, dict):
        if value.get("product", False):
            print(value['product'])
        if value.get("orderNumber", False):
            print(value['orderNumber'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...