Сравнение словаря со списком в качестве значений и словаря для генерации значений

я изменил ваш код для класса ShopCLI

package tester;

import java.util.ArrayList;
import java.util.Scanner;

public class ShopCLI {

public static void main(String[] args) {

   ArrayList<Order> ord = new ArrayList<>();
   int orderNumber =1;
   System.out.println("Welcome to Sandwich Shop CLI V1!");
   System.out.println("start order");

   Scanner sc = new Scanner(System.in);
  while(true){
   System.out.println("Press 1 for new order or 2 to Exit");
   int choice = sc.nextInt();

   if (choice == 1){
     System.out.println("Enter outer Options:Outer Options are Bun, Bread or Brioche");

      String inputOuter = sc.next();

      System.out.println("Enter inner Options:Inner Options are Ham, Cheese or Cucumber");

      String inputInner = sc.next();

      System.out.println("Enter sauce Options:Sauce Options are Mayo, Butter or Marmite");

      String inputSauce = sc.next();
     Order order1 = new Order(orderNumber, inputOuter, inputInner, inputSauce, 0);
     order1.setOrder(inputOuter, inputInner, inputSauce);
       System.out.println("You Made a " + inputInner + " with " + inputSauce + " Sandwich on " + inputOuter);
       System.out.println("This Will Cost " + order1.getCost());
       ord.add(order1);
   }
   else if (choice == 2){
       System.out.println("Exited.");
       System.exit(1);
   }
  }
 }

}

, а формат setOrder также изменен public void setOrder(String repOuter, String repInner, String repSauce)

1
задан jpp 16 January 2019 в 11:07
поделиться

2 ответа

Вы можете использовать длины значений в каждом ключе и в самом словаре для достижения желаемого результата, используя следующее:

r = {1:['1', '2', '3'], 2:['1', '2', '3'], 3:['1', '2', '3', '4', '5']}
d = {2: 2, 1: 4, 3: 1}

for k,v in d.items():
    if k < len(r) and v < len(r[k]):
        print(r[k][v])
0
ответ дан blewittrb 16 January 2019 в 11:07
поделиться

Вы можете индексировать напрямую, обрабатывая исключения соответствующим образом:

for k, v in d.items():
    try:
        print(r[k][v])
    except (KeyError, IndexError):
        pass

# 3
# 2

KeyError может быть вызвано, если первый индексатор k не является ключом словаря. IndexError может быть увеличено, если второй индексатор v слишком велик, учитывая значение списка словаря. Вы должны тщательно определить, какие ошибки нужно фиксировать и как ими управлять.

0
ответ дан jpp 16 January 2019 в 11:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: