java和python相当于php的foreach($ array as $ key => $ value)

Las*_*ifa 15 php python java associative-array

在php中,可以使用关联数组处理状态名称列表及其缩写,如下所示:

<?php
    $stateArray = array(
        "ALABAMA"=>"AL",
        "ALASKA"=>"AK",
        // etc...
        "WYOMING"=>"WY"
    );

    foreach ($stateArray as $stateName => $stateAbbreviation){
        print "The abbreviation for $stateName is $stateAbbreviation.\n\n";
    }
?>
Run Code Online (Sandbox Code Playgroud)

输出(保留密钥顺序):

The abbreviation for ALABAMA is AL.

The abbreviation for ALASKA is AK.

The abbreviation for WYOMING is WY.
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,数组元素的顺序保留在php版本的输出中.使用HashMap的Java实现不保证元素的顺序.Python中的字典也不是.

这是如何在java和python中完成的?我只找到提供价值的方法,给定密钥,如python:

stateDict = {
    "ALASKA": "AK",
    "WYOMING": "WY",
}

for key in stateDict:
    value = stateDict[key]
Run Code Online (Sandbox Code Playgroud)

编辑:基于答案,这是我在python中的解决方案,

# a list of two-tuples
stateList = [
    ('ALABAMA', 'AL'),
    ('ALASKA', 'AK'),
    ('WISCONSIN', 'WI'),
    ('WYOMING', 'WY'),
]

for name, abbreviation in stateList:
    print name, abbreviation
Run Code Online (Sandbox Code Playgroud)

输出:

ALABAMA AL
ALASKA AK
WISCONSIN WI
WYOMING WY
Run Code Online (Sandbox Code Playgroud)

这正是所需要的.

new*_*cct 34

在Python中:

for key, value in stateDict.items(): # .iteritems() in Python 2.x
    print "The abbreviation for %s is %s." % (key, value)
Run Code Online (Sandbox Code Playgroud)

在Java中:

Map<String,String> stateDict;

for (Map.Entry<String,String> e : stateDict.entrySet())
    System.out.println("The abbreviation for " + e.getKey() + " is " + e.getValue() + ".");
Run Code Online (Sandbox Code Playgroud)

  • 如果你需要保持元素的顺序,请使用`LinkedHashMap`. (4认同)
  • 根据定义,Python dicts是无序的.如果你想在python中订购数据,请查看列表或其他数据结构. (2认同)

小智 6

在java中为关联数组使用Map

import java.util.*;

class Foo
{
    public static void main(String[] args)
    {
        Map<String, String> stateMap = new HashMap<String, String>();
        stateMap.put("ALABAMA", "AL");
        stateMap.put("ALASKA", "AK");
        // ...
        stateMap.put("WYOMING", "WY");

        for (Map.Entry<String, String> state : stateMap.entrySet()) {
             System.out.printf(
                "The abbreviation for %s is %s%n",
                state.getKey(),
                state.getValue()
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)